前言
索引的目的是提升查询数据的效率,所以我们建索引的标准应该一切从提升查询效率为基准。
小技巧
-
对于有唯一值的列尽量使用唯一索引
-
索引长度尽量小一点,长度小的索引可以节省索引空间,也会使查找的速度得到提升,因为索引页只有16k,索引列长度小的话,一页可以容纳更多的数据
-
太长的列可以选择部分内容做索引,遵循最左前缀原则
-
更新频繁的列不适合建索引
-
利用断桥原则(最左前缀原则),比如建立了一个联合索引(a,b,c),那么其实我们可利用的索引就有(a), (a,b), (a,b,c)
-
不要过多创建索引,索引越多占用的空间越多,而且每次增、删、改操作都会重建索引,并且索引太多的话也会增加之后的优化复杂度
-
尽量扩展索引,比如现有索引(a),现在我又要对(a,b)进行索引,不需要再建一个索引(a,b),只需要在原索引(a)的基础上新增b列即可
-
一次查询是不能应用多个索引,即使你查询条件中有多个索引,最终也只会选择最优的一个
-
<,<=,=,>,>=,BETWEEN,IN 可用到索引,<>,not in ,!= 则不行
-
like “xxxx%” 是可以用到索引的,like “%xxxx” 和 like “%xxx%” 则不行(但会用到索引下推)
-
NULL会使索引的效果大打折扣
-
索引列若出现函数或计算,则索引不会生效