
# INDEX对象设计规范（重点）
#### 规则2.14 只创建必要的索引，创建索引必须选择合适的列和顺序
![](https://support.huaweicloud.com/devg-dws/public_sys-resources/note_3.0-zh-cn.png)
**违反规范的影响**：
- 冗余索引浪费空间，索引多影响入库效率。
  
- 组合索引中列顺序错误，影响查询效率。
  
**最佳实践**：
索引的使用需兼顾以下条件：
- 索引列必须是常用于过滤条件或JOIN关联条件的列。

- 索引列必须是DISTINCT值多的列。
- 创建多列组合索引时，DISTINCT值多的列往前放。
- 单表索引个数控制在5个以内，可通过组合索引控制索引的个数。
- 数据批量增删改场景，建议先删除索引，完成增删改后再加回索引，提升批量操作性能（实时访问会有影响）。
 
#### 建议2.15 列存表通常可不建索引，极致性能场景需正确选择索引类型
![](https://support.huaweicloud.com/devg-dws/public_sys-resources/note_3.0-zh-cn.png)
**违反规范的影响**：
- 错误的索引对列存的访问无任何性能帮助，反而可能影响查询性能。
  
**方案建议**：
1. 创建索引时指定索引类型，避免使用默认的PSORT类型索引。
2. 极端点查（海量数据中检索极少数据）场景，可使用B-Tree类型索引。
3. 范围查询性能要求高的场景，可以创建Partial Cluster Key（局部聚簇，简称PCK）通过min/max稀疏索引实现事实表快速过滤扫描。PCK的选取遵循以下原则：
   - 【关注】一张表上只能建立一个PCK，一个PCK可以包含多列，但是一般不建议超过2列。
   
   - 【建议】针对表达式过滤条件列创建PCK（形如col op const，op为操作符 =、\>、\>=、\<=、\<，const为常量值）。
    
 
