主要观点总结
本文主要介绍了在MySQL中遇到索引失效的场景,包括使用like语句、not like语句、not in语句、not exists语句等情况下索引失效的情况,以及其他如使用函数、表达式、隐式转换、不等于、is not null语句、or语句等情况下索引失效的场景。同时,也介绍了在执行sql语句时使用执行计划进行分析的方法,以及执行计划中的属性含义。
关键观点总结
关键观点1: MySQL索引失效的场景
包括使用like语句、not like语句、not in语句、not exists语句等情况下索引失效的情况。
关键观点2: 索引失效与数据库版本的关系
索引失效的情况可能与数据库版本有关。
关键观点3: 执行计划的分析
使用执行计划(EXPLAIN)分析sql是否正确地使用了索引,以及执行计划中的属性含义。
关键观点4: 访问类型(type属性)的说明
包括eq_ref和ref的解释,eq_ref是指每行数据都是通过主键或唯一索引与另一张表做 join,ref是指使用普通索引(不包括唯一索引)进行查找。
文章预览
脚本之家 设为“ 星标 ⭐ ” 第一时间收到文章更新 来源 | 君哥聊技术(ID:gh_1f109b82d301) 面试官:使用 MySQL 时你遇到过哪些索引失效的场景? 我:MySQL 索引失效的场景有很多,我说一下我遇到的几个场景。 先假定有一张员工表,sql 如下: CREATE TABLE `tb_staff` ( `staff_id` tinyint ( 3 ) NOT NULL COMMENT '员工编号' , `id_no` varchar ( 20 ) DEFAULT NULL COMMENT '员工姓名' , `name` varchar ( 20 ) DEFAULT NULL COMMENT '员工姓名' , `email` varchar ( 200 ) DEFAULT NULL COMMENT '邮件地址' , `age` tinyint ( 3 ) DEFAULT NULL COMMENT '年龄' , `sex` tinyint ( 1 ) DEFAULT '0' COMMENT '性别,0:男 1:女' , `address` varchar ( 300 ) DEFAULT NULL COMMENT '家庭住址' , `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间' , `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间' , PRIMARY
………………………………