MySql学习笔记(九):索引失效
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,数据准备:CREATE TABLE `t_blog` ( `id` int(11) NOT NULL auto_increment, `title` varchar(50) default NUL
千家信息网最后更新 2025年11月08日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安全错误
数据库的锁怎样保障安全
方城县政府网络安全局
深入linux网络技术内幕
洛阳语音软件开发
SQL数据库学习用品收纳
js表单写入数据库
日照工业学校计算机网络技术
电脑软件报错数据库DBD
esxi 使用什么数据库
石家庄软件开发要多少钱
wince系统软件开发
维盟网络技术
网络技术相关工具
119网络安全教育平台
财会数据库
cad相关软件开发
能源行业网络安全比赛
数据库安全的关键技术
db2删除数据库所有表
浙江农信软件开发机试题
mysql数据库建立视图
阳江通讯软件开发报价行情
亚马逊免费云服务器如何申请
邮乐网络技术公司电话
福州星网锐捷网络技术
第二次土地调查数据库下载
泉州智信网络技术有限公司
数据库中的目录是什么
什么云服务器安全
数据库1433端口映射
导入数据库文件不完整