MySQL范围查找时,索引失效问题探究
Java之间
共 2363字,需浏览 5分钟
·
2021-11-28 14:45
往期热门文章:
1、有了 for (;;) ,为什么还需要while (true) ?到底哪个更快?
2、名企公开挂“加班真好”标语,员工称一年被免费“白嫖”600多小时!网友看不下去了,稽查部门展开调查...
来源:blog.csdn.net/qq_25188255/
article/details/81316498
1 问题描述
CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` enum('M','F') NOT NULL,
`hire_date` date NOT NULL,
`age` int(11) NOT NULL,
PRIMARY KEY (`emp_no`),
KEY `unique_birth_name` (`first_name`,`last_name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
unique_birth_name (first_name,last_name)
。使用以下语句:EXPLAIN SELECT
gender
FROM
employees
ORDER BY
first_name,
last_name
type:all
及 Extra:Using filesort
可得,索引没有生效。EXPLAIN SELECT
gender
FROM
employees
WHERE first_name > 'Leah'
ORDER BY
first_name,
last_name
EXPLAIN SELECT
gender
FROM
employees
WHERE first_name > 'Tzvetan'
ORDER BY
first_name,
last_name
2 问题分析
SELECT
COUNT(first_name)
FROM
employees
ORDER BY
first_name,
last_name
SELECT
COUNT(first_name)
FROM
employees
WHERE first_name > 'Leah'
ORDER BY
first_name,
last_name
SELECT
COUNT(first_name)
FROM
employees
WHERE first_name > 'Tzvetan'
ORDER BY
first_name,
last_name
3 总结
最近热文阅读:
1、有了 for (;;) ,为什么还需要while (true) ?到底哪个更快? 2、名企公开挂“加班真好”标语,员工称一年被免费“白嫖”600多小时!网友看不下去了,稽查部门展开调查... 3、面试官:为什么 Java 不把基本类型放在堆中?我竟然答不上来。。 4、IDEA 注释模板这样搞! 5、后端开挂:3行代码写出8个接口! 6、推荐一款可视化配置 Nginx 的神器 7、一款性能调优利器 — 火焰图 8、Redis 实现限流的三种方式 9、推荐 15 款常用开发工具 10、一次 QPS 翻倍的 Java 服务性能优化 关注公众号,你想要的Java都在这里
评论