mysql索引失效的原因
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,小编给大家分享一下mysql索引失效的原因,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!索引对于MySQL而言,是非常重要的篇章。索引知识点也巨多,要想掌握透彻,需要逐个知识点一一击破,
千家信息网最后更新 2026年11月02日mysql索引失效的原因
小编给大家分享一下mysql索引失效的原因,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!
索引对于MySQL而言,是非常重要的篇章。索引知识点也巨多,要想掌握透彻,需要逐个知识点一一击破,今天来先来聊聊哪些情况下会导致索引失效。
图片总结版

相关免费学习推荐:mysql视频教程
全值匹配(索引最佳)
explain select * from user where name = 'zhangsan' and age = 20 and pos = 'cxy' and phone = '18730658760';
和索引顺序无关,MySQL底层的优化器会进行优化,调整索引的顺序explain select * from user where name = 'zhangsan' and age = 20 and pos = 'cxy' and phone = '18730658760';
1、违反最左前缀法则
如果索引有多列,要遵守最左前缀法则即查询从索引的最左前列开始并且不跳过索引中的列explain select * from user where age = 20 and phone = '18730658760' and pos = 'cxy';
2、在索引列上做任何操作
如计算、函数、(自动or手动)类型转换等操作,会导致索引失效从而全表扫描explain select * from user where left(name,5) = 'zhangsan' and age = 20 and phone = '18730658760';

3、索引范围条件右边的列
索引范围条件右边的索引列会失效explain select * from user where name = 'zhangsan' and age > 20 and pos = 'cxy';
4、尽量使用覆盖索引
只访问索引查询(索引列和查询列一致),减少select*explain select name,age,pos,phone from user where age = 20;
5、使用不等于(!=、<>)
mysql在使用不等于(!=、<>)的时候无法使用索引会导致全表扫描(除覆盖索引外)explain select * from user where age != 20;explain select * from user where age <> 20;
6、like以通配符开头('%abc')
索引失效explain select * from user where name like '%zhangsan';
索引生效explain select * from user where name like 'zhangsan%';
7、字符串不加单引号索引失效
explain select * from user where name = 2000;
8、or连接
少用orexplain select * from user where name = '2000' or age = 20 or pos ='cxy';
9、order by
正常(索引参与了排序)explain select * from user where name = 'zhangsan' and age = 20 order by age,pos;备注:索引有两个作用:排序和查找
导致额外的文件排序(会降低性能)explain select name,age from user where name = 'zhangsan' order by pos;//违反最左前缀法则explain select name,age from user where name = 'zhangsan' order by pos,age;//违反最左前缀法则explain select * from user where name = 'zhangsan' and age = 20 order by created_time,age;//含非索引字段
10、group by
正常(索引参与了排序)explain select name,age from user where name = 'zhangsan' group by age;备注:分组之前必排序(排序同order by)
导致产生临时表(会降低性能)explain select name,pos from user where name = 'zhangsan' group by pos;//违反最左前缀法则explain select name,age from user where name = 'zhangsan' group by pos,age;//违反最左前缀法则explain select name,age from user where name = 'zhangsan' group by age,created_time;//含非索引字段
使用的示例数据
mysql> show create table user \G****************************************************** Table: userCreate Table: CREATE TABLE `user` ( `id` int(10) NOT NULL AUTO_INCREMENT, `name` varchar(20) DEFAULT NULL, `age` int(10) DEFAULT '0', `pos` varchar(30) DEFAULT NULL, `phone` varchar(11) DEFAULT NULL, `created_time` datetime DEFAULT NULL, PRIMARY KEY (`id`), KEY `idx_name_age_pos_phone` (`name`,`age`,`pos`,`phone`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
看完了这篇文章,相信你对mysql索引失效的原因有了一定的了解,想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!
索引
前缀
法则
排序
知识
查询
原因
右边
备注
字段
性能
条件
知识点
篇文章
范围
顺序
透彻
重要
一致
两个
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
什么是科技互联网
广州大一互联网络科技有限公司
中国互联网科技工作委员会毛军
互联网科技财经
艾特科技互联网
亿账通互联网科技
互联网科技股午盘股票涨跌
剑昆互联网络科技有限公司临桂
移动互联网年度科技创新
玉溪互联网科技怎么选
河南住房之家互联网科技
东莞新华互联网科技学校
互联网方面的科技前沿
江苏苏星互联网科技有限公司
宇信科技在杭州互联网排第几
35岁以上互联网科技行业
郑州欣桑互联网科技有限公司
扫呗互联网科技有限公司
互联网科技平台产品运营
保山互联网科技靠谱吗
互联网电商科技
金融科技还是互联网
平安科技 互联网
互联网 的科技创新
上游互联网科技
广州燕处互联网科技有限公司
上海同邻互联网科技有限公司规模
互联网科技企业商标注意事项
长沙渺峰互联网科技有限公司
互联网科技创新创业项目