数据仓库服务 GAUSSDB(DWS)-CREATE INDEX:注意事项

时间:2024-12-06 15:12:41

注意事项

  • 索引自身也占用存储空间、消耗计算资源,创建过多的索引将对数据库性能造成负面影响(尤其影响数据导入的性能,建议在数据导入后再建索引)。因此,仅在必要时创建索引。
  • 索引定义里的所有函数和操作符都必须是immutable类型的,即结果必须依赖于其输入参数,而不受任何外部的影响(如另外一个表的内容或者当前时间),该限制可以确保该索引的行为是定义良好的。在一个索引上或WHERE语句中使用用户定义函数,请将其标记为immutable类型函数。
  • 在分区表上创建唯一索引时,索引项中必须包含分布列和所有分区键。
  • GaussDB (DWS)在分区表上创建索引时只支持本地(LOCAL)索引,不支持全局(GLOBAL)索引。
  • 列存表和HDFS表支持B-tree索引,不支持创建表达式索引、部分索引。
  • 列存表支持通过B-tree索引建立唯一索引。
  • 列存表和HDFS表支持的PSORT索引不支持创建表达式索引、部分索引和唯一索引。
  • 列存表支持的GIN索引支持创建表达式索引,但表达式不能包含空分词、空列和多列,不支持创建部分索引和唯一索引。
  • roundrobin表不支持创建主键/唯一索引。
  • unlogged表索引创建时不可指定表空间。
  • 对表执行CREATE INDEX或REINDEX操作时会触发索引重建(索引重建过程中会先把数据转储到一个新的数据文件中,重建完成之后会删除原始文件),当表比较大时,重建会消耗较多的磁盘空间。当磁盘空间不足时,要谨慎对待大表CREATE INDEX或REINDEX操作,防止触发集群只读。
  • 针对有大批量数据增删改的表,索引个数建议控制在3个以内,最多不超过5个。
  • 避免在业务高峰期执行对大表执行CREATE INDEX和REINDEX操作。
  • 更多开发设计规范参见总体开发设计规范
support.huaweicloud.com/sqlreference-910-dws/dws_06_0165.html