MySQL索引不会被使用的7种情况

Posted 征途黯然.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL索引不会被使用的7种情况相关的知识,希望对你有一定的参考价值。

[1] 隐式类型转换

  索引列出现了隐式类型转换(Implicit Type Conversion),则mysql不会使用索引。常见的情况是,如果在SQLWHERE条件中,字段类型为字符串,而其值为数值,那么MySQL不会使用索引,这个规则和Oracle是一致的,所以,字符类型的字段值应该加上引号。

[2] cast函数

  在使用cast函数时,需要保证字符集一样,否则MySQL不会使用索引。

[3] OR

  如果WHERE条件中含有OR,除非OR条件中的所有列都是索引列,否则MySQL不会选择索引。

[4] 最左前导原则

  对于多列索引,若没有使用前导列,则MySQL不会使用索引。

[5] 通配符是第一个字符

  在WHERE子句中,如果索引列所对应的第一个字符由通配符开始,索引将不被采用,然而当通配符出现在字符串其他位置时,优化器就能利用索引。

[6] 全表扫描更快

  如果MySQL估计使用全表扫描要比使用索引快,那么MySQL将不使用索引。

[7] 运算

  如果对索引字段进行函数、算数运算或其他表达式等操作,那么 MySQL也个便用索引。

以上是关于MySQL索引不会被使用的7种情况的主要内容,如果未能解决你的问题,请参考以下文章

Mysql索引会失效的几种情况分析

MySQL中不会命中索引的情况

Mysql 索引失效问题探究

Mysql索引会失效的几种情况分析

MySQL优化 优化诀窍

MySQL从入门到精通高级篇(二十)适合创建索引的11种情况&不适合创建索引的7种情况,万字长文