MySQL索引失效的场景有哪些-面试必问 (mysql索引失效的几种情况)

教程大全 2025-07-21 07:54:56 浏览

为了验证 MySQL 中哪些情况下会导致索引失效,我们可以借助 explain 执行计划来分析索引失效的具体场景。

explain 使用如下,只需要在查询的 SQL 前面添加上 explain 关键字即可,如下图所示:

而以上查询结果的列中,我们最主要观察 key 这一列,key 这一列表示实际使用的索引,如果为 NULL 则表示未使用索引,反之则使用了索引。

以上所有结果列说明如下:

其中最重要的就是 type 字段,type 值类型如下:

创建测试表和数据

为了演示和测试那种情况下会导致索引失效,我们先创建一个测试表和相应的数据:

-- 创建表drop table if exists student;create table student(id int primary key auto_increment comment '主键',sn varchar(32) comment '学号',name varchar(250) comment '姓名',age int comment '年龄',sex bit comment '性别',address varchar(250) comment '家庭地址',key idx_address (address),key idx_sn_name_age (sn,name,age))ENGINE=InnoDB DEFAULT CHARSET=utf8;-- 添加测试数据insert into student(id,sn,name,age,sex,address)values(1,'cn001','张三',18,1,'高老庄'),(2,'cn002','李四',20,0,'花果山'),(3,'cn003','王五',50,1,'水帘洞');

当前表中总共有 3 个索引,如下图所示:

索引失效情况1:非最左匹配

最左匹配原则指的是,以最左边的为起点字段查询可以使用联合索引,否则将不能使用联合索引。我们本文的联合索引的字段顺序是 sn + name + age,我们假设它们的顺序是 A + B + C,以下联合索引的使用情况如下:

从上述结果可以看出,如果是以最左边开始匹配的字段都可以使用上联合索引,比如:

其中:A 等于字段 sn,B 等于字段 name,C 等于字段 age。

而 B+C 却不能使用到联合索引,这就是最左匹配原则。

索引失效情况2:错误模糊查询

模糊查询 like 的常见用法有 3 种:

而这 3 种模糊查询中只有第 1 种查询方式可以使用到索引,具体执行结果如下:

索引失效情况3:列运算

如果索引列使用了运算,那么索引也会失效,如下图所示:

索引失效情况4:使用函数

查询列如果使用任意 MySQL 提供的函数就会导致索引失效,比如以下列使用了 ifnull 函数之后的执行计划如下:

索引失效情况5:类型转换

如果索引列存在类型转换,那么也不会走索引,比如 address 为字符串类型,而查询的时候设置了 int 类型的值就会导致索引失效,如下图所示:

索引失效情况6:使用 is not null

当在查询中使用了 is not null 也会导致索引失效,而 is null 则会正常触发索引的,如下图所示:

总结

导致 MySQL 索引失效的常见场景有以下 6 种:


无锡科技职业学院对江苏考生专科的录取分数线是多少?

江苏2008年高考省控线本三248分专科180分[普通类]第三批本科:特征分为248分,必测科目等级要求为4C1合格,选测科目等级要求1B1C及以上。 高职(专科):特征分为180分,必测科目等级要求为4C1合格。 [体育类高职(专科)]文化240分/专业60分,学业水平测试科目的等级要求为D级不超过3门。 [艺术类高职(专科)]美术(省统考):文化140分/专业138分。 音乐(省统考):文化140分/专业160分。 专业校考:文化140分/专业成绩合格。 艺术类高职(专科)对考生学业水平测试科目的等级要求为D级不超过3门是投档线,小了点可以CTRL+ 放大看

公孙仪在鲁国做宰相,这篇课文是什么题目

公孙仪相鲁而嗜鱼 原文公孙仪相鲁而嗜鱼,一国尽争买鱼而献之,公仪子不受。 其弟子谏曰:“夫子嗜鱼而不受者,何也?”对曰:“夫唯嗜鱼,故不受也。 夫即受鱼,必有下人之色;有下人之色,将枉于法;枉于法,则免于相。 虽嗜鱼,此不必致我鱼,我又不能自给鱼。 即无受鱼而不免于相,虽嗜鱼,我能长自给鱼。 ”此明夫恃人不如自恃也,明于人之为己者不如己之自为也。 (《韩非子·外储说右下》) 译文公孙仪做了鲁国的宰相。 他特别喜欢吃鱼,全国的人都争相买鱼来献给他,公孙仪却不接受。 他学生劝谏他说:“您喜欢吃鱼而不接受别人的鱼,这是为什么呢?”他回答说:“正因为爱吃鱼,我才不接受。 假如收了别人献来的鱼,一定会有迁就他们的表现;有迁就他们的表现,就会枉法;枉法就会被罢免相位。 虽然我爱吃鱼,这时候这些人不一定再送给我鱼,我又不能自己供给自己鱼。 如果不收别人给的鱼,就不会被罢免宰相,尽管爱吃鱼,我能够长期自己供给自己鱼”。 这是明白了依靠别人不如依靠自己,懂得靠别人为自己不如自己为自己。

面试必问

今年广州市财经职业高级中学录取分数线是多少?

往年的录取分数线在400分左右(不同的专业,分数线不同,于350~~450分之间浮动)。 我校的专业主要分为商务类专业、财经类专业、艺术设计类专业等三大类。 与高考相同,艺术类比其他专业类别分数线稍微低一点,因此,三类专业的去年录取分数线分别是: 财经类专业(会计专业、金融专业):必录400分,选录380分; 商务类专业:a、商务英语、国际商务:必录450分,选录400分; b、电子商务、物资经营:必录400分,选录380分; 艺术设计类专业:美术设计、服装设计与工艺、计算机辅助设计(动漫方向):必录350分,选录300分;

今年85中必录线系547分

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐