返回顶部

mysql - index 索引 之 索引失效的几种情况

  1. or:如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因)
    1. 注意:要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引
  2. 联合索引,不是使用的第一部分,则不会使用索引(未满足最左前缀原则
  3. 模糊查询:like查询是以%开头
    1. 模糊查询不以 % 开头,会使用索引
    2. 针对以 % 开头索引失效的问题,解决方案:使用覆盖索引
  4. 字符串:如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引;
  5. 运算操作:在索引列上做任何操作(计算,函数,(自动或者手动)类型装换),会导致索引失效而导致全表扫描
  6. 范围条件:存储引擎不能使用索引中范围条件右边的列,范围之后索引失效。(< ,> between and)
  7. 不等于:mysql使用不等于(!= 或者<>)的时候,无法使用索引,会导致索引失效
  8. 是否为空:mysql中使用is not null 或者 is null会导致无法使用索引
  9. 全表扫描更优:如果mysql估计使用全表扫描要比使用索引快,则不使用索引
posted @ 2021-01-18 22:19  Be-myself  阅读(750)  评论(0编辑  收藏  举报
levels of contents 点击查看具体代码内容