索引设计基本原则
1、根据where条件建索引是极其重要的一个原则,注意不要过多用索引,否则对表更新的
效率有很大的影响,因为在操作表的时候要化大量时间花在创建索引中。
2、设计索引的一个重要原则就是能用窄索引(1~2个字段)不用宽索引(大于2个字
段),因为窄索引往往比组合索引更有效。拥有更多的窄索引,将给优化程序提供更多的选
择余地,这通常有助于提高性能。
3、.对于复合索引,在查询使用时,最好将条件顺序按找索引的顺序,这样效率最高。
4、如果仅用聚集索引的起始列作为查询条件和同时用到复合聚集索引的全部列的查询速度
是几乎一样的,甚至比用上全部的复合索引列还要略快(在查询结果集数目一样的情况
下);而如果仅用复合聚集索引的非起始列作为查询条件的话,这个索引是不起任何作用
的。如果复合索引的所有列都用上,而且查询结果少的话,这样就会形成“索引覆盖”,因而
性能可以达到最优。同时,请记住:无论您是否经常使用聚合索引的其他列,但其前导列一
定要是使用最频繁的列。
5、需要在同一列上同时建单一索引和复合索引么?
(1)对一张表来说,如果有一个复合索引on(col1,col2),就没有必要同时建立一个单索引
oncol1。
(2)如果查询条件需要,可以在已有单索引oncol1的情况下,添加复合索引on
(col1,col2),对于效率有一定的提高。
(3)同时建立多字段(包含5、6个字段)的复合索引没有特别多的好处,相对而言,建立多
个窄字段(仅包含一个,或顶多2个字段)的索引可以达到更好的效率和灵活性。
6、一定需要覆盖性查询么?通常最好不要采用一个强调完全覆盖查询的策略。如果Select
子句中的所有列都被一个非群集索引覆盖,优化程序会识别出这一点,并提供很好的性能。
不过,这通常会导致索引过宽,并会过度依赖于优化程序使用该策略的可能性。通常,是用
数量更多的窄索引,这对于大量查询来说可以提供更好的性能。
索引设计基本原则(可能与上面有重复)
1)针对B*树单字段索引的设计原则
1、分析SQL语句中的约束条件字段
2、如果约束条件字段不固定,建议创建针对单字段的普通B*树索引
3、选择可选性最高的字段建立索引