0
点赞
收藏
分享

微信扫一扫

【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也个便用索引。


举报

相关推荐

0 条评论