暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

华为GaussDB T 管理索引

墨天轮 2019-10-12
1063

管理索引

索引可以提高数据的访问速度,但同时也增加了插入、更新和删除表的处理时间。所以是否要为表增加索引,索引建立在哪些字段上,是创建索引前必须要考虑的问题。需要分析应用程序的业务处理、数据使用、经常被用作查询条件或者被要求排序的字段来确定是否建立索引。本节介绍GaussDB 100支持的索引类型,并简要介绍索引的使用方法,更详细的索引相关命令请参见数据库开发指南和语法参考INDEX的相关内容。

相关概念

按照索引列数分为单列索引和多列索引(组合索引)。

  • 单列索引

    仅在一个列上建立索引。

  • 多列索引

    多列索引又称为组合索引。一个索引中包含多个列,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。GaussDB 100多列索引最大支持16个字段,长度累加最多3900字节(以类型最大长度为准)。

按照索引使用方法可以分为以下索引:

  • 普通索引:默认创建的B-Tree索引。
  • 唯一索引:列值或列值组合唯一的索引。建表时会在主键上自动建立唯一索引。
  • 函数索引:建立在函数基础之上的索引。
  • 分区索引:在表的分区上独立创建的索引,在删除某个分区时不影响该表的其他分区索引的使用。

索引建立原则

建立索引后,在查询的时候合理利用索引能够提高数据库性能。但是创建索引和维护索引需要时间消耗,索引文件占用物理空间,同时对表的数据进行INSERT、UPDATE、 DELETE时候需要维护索引,会降低数据的维护效率。所以建议基于以下原则,合理使用索引。

  • 在经常需要搜索查询的列上创建索引,可以加快搜索的速度。
  • 在作为主键的列上创建索引,强制该列的唯一性和组织表中数据的排列结构。
  • 在经常使用连接的列上创建索引,这些列主要是一些外键,可以加快连接的速度。
  • 在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的。
  • 在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,缩短排序查询时间。
  • 在经常使用WHERE子句的列上创建索引,加快条件的判断速度。
  • 为经常出现在关键字ORDER BY、GROUP BY、DISTINCT后面的字段建立索引。
  • 索引创建成功后,系统会自动判断何时引用索引。当系统认为使用索引比顺序扫描更快时,就会使用索引。
  • 索引创建成功后,必须和表保持同步以保证能够准确地找到新数据,这样就增加了数据操作的负荷。因此请定期删除无用的索引。

创建索引

使用CREATE INDEX命令创建索引。

以在表staffs的STAFF_ID列上创建索引staffs_ind为例,索引使用的表空间为human_resource。“ONLINE”在线创建索引可以较少对其他用户使用表的影响,不阻塞在线业务的运行。

CREATE INDEX staffs_ind ON staffs(staff_id) TABLESPACE human_resource ONLINE;

重建索引

当对表执行大量增、删、改操作后,表的数据可能在磁盘的物理文件上存在碎片,影响访问速度。通过ALTER INDEX命令重建索引可以重组索引数据并释放不使用的空间,从而提高数据访问效率和空间使用效率。

数据库重启回滚期间不支持重建索引。

以重建索引staffs_ind为例。

ALTER INDEX staffs_ind REBUILD ONLINE;

重命名索引

如果用户需要重新统一索引的命名风格,可以通过RENAME语法来只修改索引的名称,而不改变索引的其他属性。

数据库重启回滚期间不支持重命名索引。

以重命名索引staffs_ind为例。

ALTER INDEX staffs_ind RENAME TO staffs_ind_new;

删除索引

使用DROP INDEX命令删除索引。删除索引有以下限制:

  • 数据库重启回滚期间不支持删除索引。
  • 开启“ENABLE_IDX_CONFS_NAME_DUPL”配置项后,不同表支持索引名重名,删除索引时必须指定表名。
  • 不能删除已有的“UNIQUE KEY”键或“PRIMARY KEY”键约束相关的索引。
  • 删除表则同时删除了该表的索引。

以删除staffs表上的索引staffs_ind_new为例。

DROP INDEX staffs_ind_new ON staffs;

查看索引的信息

在创建索引以后,可以根据用户权限的不同通过“DB_INDEXES”“ADM_INDEXES”视图查看索引信息。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论