1.索引列的数据长度能少则少。 说明:为了减少我们简历B+树时候关键字的重量,让结点可以存放更多数据
2.索引一定不是越多越好,越全越好,一定是建合适的。 我们建立索引需要空间开销,而且对数据修改时候可能还需要在底层数据结构中分裂和重组结点进行维护,所以索引建立一定要合适.
3.匹配列前缀可用到索引like 9999%,like%9999%、like%9999用不到索引;
4.Where条件中not in和<> (不等于号)操作无法使用索引; 无法使用索引,原理同样是选择性很差,索引不知道往哪里走
5.匹配范围值,order by也可用到索引;
6.多用指定列查询,只返回自己想到的数据列,少用select *
8.联合索引中精确匹配最左前列并 范围()匹配另外一列可以用到索引;
9.联合索引中如果查询中有某个列的范围查询(大于小于等等),则其右边的所有列都无法使用索引; 直接举例了,(age,name)联合索引. age>16 and name ="zyh",age可以精确定位,但是name用不到联合索引 为啥呢?你想想我们这里age用了索引把age指向了大于16的数据区,但是我们的name完全有可能在age 小于区也有啊,所以name没法用到索引