MySQL索引不会被使用的7种情况
Posted 征途黯然.
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL索引不会被使用的7种情况相关的知识,希望对你有一定的参考价值。
[1] 隐式类型转换
索引列出现了隐式类型转换(Implicit Type Conversion
),则mysql
不会使用索引。常见的情况是,如果在SQL
的WHERE
条件中,字段类型为字符串,而其值为数值,那么MySQL
不会使用索引,这个规则和Oracle
是一致的,所以,字符类型的字段值应该加上引号。
[2] cast函数
在使用cast
函数时,需要保证字符集一样,否则MySQL
不会使用索引。
[3] OR
如果WHERE
条件中含有OR
,除非OR
条件中的所有列都是索引列,否则MySQL
不会选择索引。
[4] 最左前导原则
对于多列索引,若没有使用前导列,则MySQL
不会使用索引。
[5] 通配符是第一个字符
在WHERE
子句中,如果索引列所对应的第一个字符由通配符开始,索引将不被采用,然而当通配符出现在字符串其他位置时,优化器就能利用索引。
[6] 全表扫描更快
如果MySQL
估计使用全表扫描要比使用索引快,那么MySQL
将不使用索引。
[7] 运算
如果对索引字段进行函数、算数运算或其他表达式等操作,那么 MySQL也个便用索引。
以上是关于MySQL索引不会被使用的7种情况的主要内容,如果未能解决你的问题,请参考以下文章