MySql学习笔记(九):索引失效
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,数据准备:CREATE TABLE `t_blog` ( `id` int(11) NOT NULL auto_increment, `title` varchar(50) default NUL
千家信息网最后更新 2025年01月21日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安全错误
数据库的锁怎样保障安全
2020网络安全宣传周网址
4A网络安全
怀化哪里有软件开发服务
中国电子病历软件开发公司
做软件开发累不累
计算机网络技术所需要的配置
网络安全黑板报大字
csgo换图检索服务器
陕西省软件开发设计
人力资源管理数据库电子包
数据库备份文件怎么压缩的
创造与魔法和平服务器选哪个
怎么安全的退出服务器
软件开发rest接口设计评审
东软的网络安全怎么样
服务器天组
油菜花游乐宝服务器连接不上
备份数据库中指定的表
服务器可以当电脑用吗
软件开发浏览器简称
plsql查询数据库
数据库的使用范围包括
警察给学生网络安全讲课
tftp服务器软件如何使用
.net软件开发兼职
安徽黄山软件开发培训哪里有
arma3进服务器一直加载
5e服务器受不受vac保护
网络安全主题的课堂活动总结
怎么管理国外服务器