MySql学习笔记(九):索引失效
admin
2023-04-18 12:04:41
0

数据准备:

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、复合索引丢失第一列字段:
MySql学习笔记(九):索引失效

2、复合索引,跳过中间字段:

先来看查询条件只有第一列时的结果:

MySql学习笔记(九):索引失效

接下来执行跳过中间字段的情况:

MySql学习笔记(九):索引失效

此时索引确实生效,但key_len依旧是153,理论上查询精度越大key_len会越大,但此时并没有增大就表示条件【a='123'】上的索引并没有用到。

复合索引应当遵守【最左前列原则】,即:查询应该从索引的最左前列开始并且不能跳过中间列,一旦跳过某个列,该列之后的列上的索引都会失效

3、在索引上进行计算、函数、类型转换等操作导致索引失效:
使用函数:

MySql学习笔记(九):索引失效

进行自动类型转换,title定义的是varchar类型,但查询时给他赋值int导致mysql会自动给他进行类型转换导致索引失效

MySql学习笔记(九):索引失效

使用  + - * / 等计算

MySql学习笔记(九):索引失效

4、使用了范围导致该索引之后的索引失效

先来看一下没使用范围的sql执行情况:

MySql学习笔记(九):索引失效

随着查询精度的增大,key_len增大,表示两个条件的索引均有效,现在在范围之后再添加一个查询条件:

MySql学习笔记(九):索引失效

key_len依旧保持158,说明票【a=1】这个条件上的索引是失效的。

5、使用不等于操作(!= 或 <>)

MySql学习笔记(九):索引失效

6、使用 is not null 

MySql学习笔记(九):索引失效

7、使用前导模糊查询

先来看后导查询:

MySql学习笔记(九):索引失效

此时索引并没有失效,再来看前后导模糊查询:

MySql学习笔记(九):索引失效

此时索引已经失效,那么单独使用前导查询:

MySql学习笔记(九):索引失效

此时索引失效,因此,使用前导查询会导致索引失效。

8、mysql不走索引会有更好的查询性能时索引失效

相关内容

热门资讯

终于了解“酷玩联盟究竟有挂吗?... 终于了解“酷玩联盟究竟有挂吗?”(外卦神器下载)您好,酷玩联盟这个游戏其实有挂的,确实是有挂的,需要...
今日重大消息“微信小程序掼蛋是... 网上科普关于“微信小程序掼蛋有没有挂”话题很是火热,小编也是针对微信小程序掼蛋作*弊开挂的方法以及开...
今日重磅消息“新众亿炸/金/花... 网上科普关于“新众亿炸/金/花有没有挂”话题很是火热,小编也是针对新众亿炸/金/花作*弊开挂的方法以...
【第一财经】“新毛豆互娱到底是... 【第一财经】“新毛豆互娱到底是不是挂?”(其实是有挂)您好,新毛豆互娱这个游戏其实有挂的,确实是有挂...
终于懂了“欢乐情怀开挂器?”(... 有 亲,根据资深记者爆料欢乐情怀是可以开挂的,确实有挂(咨询软件无需打开...
紫燕食品创新研究院:以科研赋能... 在消费升级驱动食品行业高质量发展的背景下,研发创新成为企业核心竞争力的关键支撑。作为卤味行业领军企业...
玩家攻略科普“桂麻圈怎么开挂?... 家人们!今天小编来为大家解答桂麻圈透视挂怎么安装这个问题咨询软件客服徽9784099的挂在哪里买很多...
【第一消息】“海阔麻将到底是不... 有 亲,根据资深记者爆料海阔麻将是可以开挂的,确实有挂(咨询软件无需打开...
终于懂了“阿当福建麻将到底有挂... 网上科普关于“阿当福建麻将有没有挂”话题很是火热,小编也是针对阿当福建麻将作*弊开挂的方法以及开挂对...
今日重磅消息“友间十三张真的有... 您好:友间十三张这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在这款游...