几大索引失效原因

1.带头大哥不能死这局经典语句是说创建索引要符合最左侧原则。例如表结构为u_id,u_name,u_age,u_sex,u_phone,u_time创建索引为idx_user_name_age_sex。查询条件必须带上u_name这一列。

2.不在索引列上做任何操作不在索引列上做任何计算、函数、自动或者手动的类型转换,否则会进行全表扫描。简而言之不要在索引列上做任何操作。

3.俩边类型不等例如建立了索引idx_user_name,name字段类型为varchar在查询时使用where name = kaka,这样的查询方式会直接造成索引失效。正确的用法为where name = "kaka"。

4.不适当的like查询会导致索引失效创建索引为idx_user_name执行语句为select * from user where name like "kaka%";可以命中索引。执行语句为select name from user where name like "%kaka";可以使用到索引(仅在8.0以上版本)。执行语句为select * from user where name like ''%kaka";会直接导致索引失效

5.范围条件之后的索引会失效创建索引为idx_user_name_age_sex执行语句select * from user where name = 'kaka' and age > 11 and sex = 1;上面这条sql语句只会命中name和age索引,sex索引会失效。复合索引失效需要查看key_len的长度即可。总结:%在后边会命令索引,当使用了覆盖索引时任何查询方式都可命中索引。以上就是咔咔关于索引失效会出现的原因总结,在很多文章中没有标注MySQL版本,所以你有可能会看到is null 、or索引会失效的结论。

作者:咔咔
链接:https://www.zhihu.com/question/497684269/answer/2228717844
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

作者:静默虚空
欢迎任何形式的转载,但请务必注明出处。
限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。

posted @   Chenyi_li  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示