MySql学习笔记(九):索引失效
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,数据准备:CREATE TABLE `t_blog` ( `id` int(11) NOT NULL auto_increment, `title` varchar(50) default NUL
千家信息网最后更新 2026年11月01日MySql学习笔记(九):索引失效
数据准备:
CREATE TABLE `t_blog` ( `id` int(11) NOT NULL auto_increment, `title` varchar(50) default NULL, `typeId` int(11) default NULL, `a` int(11) default '0', PRIMARY KEY (`id`), KEY `index_1` USING BTREE (`title`,`typeId`,`a`)) ENGINE=InnoDB DEFAULT CHARSET=utf8
1、复合索引丢失第一列字段:
2、复合索引,跳过中间字段:
先来看查询条件只有第一列时的结果:
接下来执行跳过中间字段的情况:
此时索引确实生效,但key_len依旧是153,理论上查询精度越大key_len会越大,但此时并没有增大就表示条件【a='123'】上的索引并没有用到。
复合索引应当遵守【最左前列原则】,即:查询应该从索引的最左前列开始并且不能跳过中间列,一旦跳过某个列,该列之后的列上的索引都会失效
3、在索引上进行计算、函数、类型转换等操作导致索引失效:
使用函数:
进行自动类型转换,title定义的是varchar类型,但查询时给他赋值int导致mysql会自动给他进行类型转换导致索引失效
使用 + - * / 等计算
4、使用了范围导致该索引之后的索引失效
先来看一下没使用范围的sql执行情况:
随着查询精度的增大,key_len增大,表示两个条件的索引均有效,现在在范围之后再添加一个查询条件:
key_len依旧保持158,说明票【a=1】这个条件上的索引是失效的。
5、使用不等于操作(!= 或 <>)
6、使用 is not null
7、使用前导模糊查询
先来看后导查询:
此时索引并没有失效,再来看前后导模糊查询:
此时索引已经失效,那么单独使用前导查询:
此时索引失效,因此,使用前导查询会导致索引失效。
8、mysql不走索引会有更好的查询性能时索引失效
索引
查询
条件
类型
前导
字段
范围
先来
函数
前列
情况
精度
有效
接下来
两个
原则
只有
性能
数据
理论
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
咖啡网
河南云网互联网络科技有限公司
科技互联网龙头
没上市的科技互联网公司
合肥互联网科技公司
紫鲸互联网科技
互联网科技视频
世界互联网领先科技成果
美国互联网黑科技
上海卓越科技 互联网
互联网科技股有哪些
丰台科技园 互联网公司
互联网系的金融科技公司
移动互联网科技股
武汉健翔互联网络科技有限公司
昊天互联网科技有限公司
互联网媒体平台算高科技产业
阿里互联网科技企业
互联网企业科技类企业如何做账
绵阳真晨互联网科技有限公司
为想互联网科技
艾特科技互联网
贷财互联网科技
镁科技互联网资讯平台
互联网时代科技改变生活
互联网时代的科技公司
互联网科技资金流入
互联网科技包装股
众联互联网络科技
科技互联网公司两年变化