sql索引失效的原因

1.or关键字,or条件的列里面有未加索引的,索引会失效(因为查到没加索引的列时,还是会去全表搜索)

2.字段类型是字符串时,没有使用引号包起来,比如id为string类型,查询时id=10,但是传进来的不是string,mysql会做类型转换,导致索引失效

3.like查询是以%开头

4.联合索引,查询时的条件列不是联合索引中的第一个列,索引失效。当我们创建一个联合索引的时候,如(k1,k2,k3),相当于创建了(k1)、(k1,k2)和(k1,k2,k3)三个索引,查询时想用k3,那么k1和k2必须也要用到

5.对索引进行运算+-*/

6.使用!= 或者<>或者not in的时候,会导致索引失效

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. 索引失效 可能失效where 语句中包含or时使用or并不是一定会使索引失效,你需要看or左右两边的查询列是...
    炽热_3a57阅读 1,634评论 0 0
  • 背景:最近生产爆出一条慢sql,原因是用了or和!=,导致索引失效。于是,总结了索引失效的十大杂症 一、查询条件包...
    没事遛弯阅读 3,968评论 0 1
  • MySQL索引失效的常见场景 在验证下面的场景时,请准备足够多的数据量,因为数据量少时,MySQL的优化器有时会判...
    祁小彬阅读 3,247评论 0 2
  • 后端程序员必备:书写高质量SQL的30条建议 作者:Jay_huaxiao 出自:博客园 原文:https://w...
    啊了个支阅读 1,625评论 0 0
  • /** 针对mysql 5.6.41 测试 建表 DROP TABLE IF EXISTS user_index;...
    bug创作者阅读 2,622评论 0 0

友情链接更多精彩内容