更新时间:2024-12-02 GMT+08:00
分享

INDEX对象设计规范(重点)

规则2.14 只创建必要的索引,创建索引必须选择合适的列和顺序

违反规范的影响

  • 冗余索引浪费空间,索引多影响入库效率。

  • 组合索引中列顺序错误,影响查询效率。

最佳实践

索引的使用需兼顾以下条件:

  • 索引列必须是常用于过滤条件或JOIN关联条件的列。
  • 索引列必须是DISTINCT值多的列。
  • 创建多列组合索引时,DISTINCT值多的列往前放。
  • 单表索引个数控制在5个以内,可通过组合索引控制索引的个数。
  • 数据批量增删改场景,建议先删除索引,完成增删改后再加回索引,提升批量操作性能(实时访问会有影响)。

建议2.15 列存表通常可不建索引,极致性能场景需正确选择索引类型

违反规范的影响

  • 错误的索引对列存的访问无任何性能帮助,反而可能影响查询性能。

方案建议

  1. 创建索引时指定索引类型,避免使用默认的psort类型索引。
  2. 极端点查(海量数据中检索极少数据)场景,可创建btree类型索引。
  3. 范围查询性能要求高的场景,可以创建Partial Cluster Key(局部聚簇,简称PCK)通过min/max稀疏索引实现事实表快速过滤扫描。PCK的选取遵循以下原则:
    • 【关注】一张表上只能建立一个PCK,一个PCK可以包含多列,但是一般不建议超过2列。
    • 【建议】针对表达式过滤条件列创建PCK(形如col op const,op为操作符 =、>、>=、<=、<,const为常量值)。

相关文档