MySQL索引建立原则

前言

索引的目的是提升查询数据的效率,所以我们建索引的标准应该一切从提升查询效率为基准。

小技巧

  1. 对于有唯一值的列尽量使用唯一索引

  2. 索引长度尽量小一点,长度小的索引可以节省索引空间,也会使查找的速度得到提升,因为索引页只有16k,索引列长度小的话,一页可以容纳更多的数据

  3. 太长的列可以选择部分内容做索引,遵循最左前缀原则

  4. 更新频繁的列不适合建索引

  5. 利用断桥原则(最左前缀原则),比如建立了一个联合索引(a,b,c),那么其实我们可利用的索引就有(a), (a,b), (a,b,c)

  6. 不要过多创建索引,索引越多占用的空间越多,而且每次增、删、改操作都会重建索引,并且索引太多的话也会增加之后的优化复杂度

  7. 尽量扩展索引,比如现有索引(a),现在我又要对(a,b)进行索引,不需要再建一个索引(a,b),只需要在原索引(a)的基础上新增b列即可

  8. 一次查询是不能应用多个索引,即使你查询条件中有多个索引,最终也只会选择最优的一个

    image-20200410005949806
  9. <,<=,=,>,>=,BETWEEN,IN 可用到索引,<>,not in ,!= 则不行

  10. like “xxxx%” 是可以用到索引的,like “%xxxx” 和 like “%xxx%” 则不行(但会用到索引下推)

  11. NULL会使索引的效果大打折扣

  12. 索引列若出现函数或计算,则索引不会生效