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不走索引会有更好的查询性能时索引失效

相关内容

热门资讯

英国将向霍尔木兹海峡多国护航行... 当地时间12日,总台记者从英国国防部获悉,英国将向在霍尔木兹海峡执行任务的多国护航行动提供无人机、战...
强化技术引领场景培育政策保障 ... 5月11日,省长叶建春就脑机接口技术与产业创新工作开展专题调研。他强调,脑机接口是培育未来产业发展新...
上海交大王如竹教授领衔撰写的“... 4月30日,国际制冷学会(IIR,International Institute of Refrig...
非人类身份蔓延:智能体AI真正... 长期以来,企业依赖服务账户、API密钥、OAuth令牌等各类非人类身份凭证,使不同服务能够在数字环境...
脑机接口“狂飙” 从病房走向多... (记者 陈锦锋)当大脑的神经信号能够直接与外部设备对话,“心想事成”便从科幻走向现实。近日,中南大学...
中巴外长通话,王毅:希望巴方保... 2026年5月12日晚,中共中央政治局委员、外交部长王毅同巴基斯坦副总理兼外长达尔通电话。达尔介绍了...
美参议院投票批准凯文·沃什出任... △凯文·沃什(资料图)当地时间5月12日,美国参议院投票批准凯文·沃什出任美联储主席,目前相关投票程...
缺油!日本快撑不住了 日本零食巨头卡乐比为节省油墨竟将原本漂亮的包装改成了黑白两色,从“喜食”变得看上去像“丧食”。日本石...
英国首相斯塔默再遭逼宫,在内阁... 【文/观察者网 熊超然】在上周经历地方选举惨败后,作为执政党领袖的英国首相斯塔默于当地时间5月11日...
日防相声称:新西兰考虑进口日本... 据凤凰卫视报道,5月12日,日本防卫大臣小泉进次郎在记者会上表示,新西兰已将日本海上自卫队最上型改良...