1、遵循最左法则(联合索引),从索引的最左列开始,并且不跳过索引中的列。如果跳跃某一列,索引将部分失效(后面的字段索引失效)。
2、在联合索引当中出现范围查询(>,<),范围查询中右侧索引失效。规避方法:使用>=,<= 可以避免索引失效。
3、不要在索引列上进行运算操作(函数运算等等),否则索引将会失效。
4、字符串类型字段,如果查询不加引号,索引失效
5、模糊查询,%关键字%,如果尾部%不会失效,前面%索引失效。
6、or链接的使用,用or分割开的条件,如果or前的条件中的列有索引,而后面的列没有索引,那么涉及的索引都不会用到。 以下id有主键索引,phone为普通索引,age是联合索引。
6、如果表中的数据量比较小,MySQL 优化器可能会选择全表扫描而不是使用索引来执行查询。
7、前缀索引,具体如下图:
8、单列索引和联合索引的使用: