云数据库 GAUSSDB-索引设计规范
索引设计规范
- 【规格】使用数据库索引实践推荐的索引类型。
索引设计建议使用推荐类型。
表1 数据库索引实践推荐 索引类型
说明
是否推荐
主键/唯一索引
单列或多列主键/唯一索引
推荐
全局索引
索引组织方式
规划中
表达式索引
索引列为表的一列或多列计算而来的一个函数或者标量表达式
限制使用
BTREE索引
索引构建类型
部分数据类型上推荐
- 【规格】对于HASH分布表,主键和唯一索引必须包含分布键。
- 【规则】合理设计组合索引,避免冗余。
例如已对(a,b,c)创建索引,则不应再单独对 (a)、(b)、(c)、(a,b)、(b,c)创建索引。当查询时如果只带有a字段上的过滤条件,一般也会利用组合索引进行查询。
- 【规则】组合索引字段个数不超过5个。
- 【规则】禁止总字符串长度超过200 的组合索引。
- 【规则】索引(包括单列索引和复合索引)字段应为NOT NULL字段。
- 【建议】不建议单表创建多个唯一索引。
同时维护多个唯一索引的开销远大于维护一个多列唯一索引,如果业务逻辑上多个唯一索引,与一个多列唯一索引等价,应使用多列唯一索引。
- 【建议】同字段上创建索引的维护效率不同。数值类型字段优于字符类型及其他数据类型,因此对于考虑创建索引的ID、时间等字段,建议使用数值类型进行存储。
- 【建议】应考虑在关联列上创建索引。
支持HASH JOIN,但是在内表较小等RESCAN代价较低的情况下,仍然可以选择NESTLOOP JOIN来完成关联。如果通过EXPLAIN可以查看到NESTLOOP JOIN计划,则可以通过在关联列上创建索引,提高NESTLOOP JOIN效率。