mysql - 为什么相同的 mysql sql 在 5.6 和 5.7 之间有两个关于 icp 的结果
问题描述
桌子
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,
PRIMARY KEY (`emp_no`),
KEY `fnln` (`first_name`,`last_name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
sql
explain select * from employees where first_name='Anneke' and last_name='Porenta';
5.6 结果 5.6 结果
5.7 结果 5.7 结果
解决方案
首先,不仅可以预期,更新版本的数据库产品可能会为查询计划创建不同的输出,这也是您想要的:您希望出现改进。
现在:查询计划的要点是 100% 相同:5.6 中存在的所有列在 5.7 中显示相同 - 因此查询计划本身没有改变。
改变的是,较新的版本显示了另外两列 - 因为对不同分区的并行查询的支持在 5.7 中是新的,所以partitions column
很容易解释。
该filtered
专栏源于查询计划器中的优化:显然,条件的选择性对于查询计划非常重要,并且显然在查询运行之前不知道确切的选择性,但是较新的查询计划器会通知您,它会猜测它使用的情况。这是一件好事。
推荐阅读
- flutter - Flutter中如何根据平台编译源码?
- javascript - 解析云代码作业功能优化
- javascript - Cordova -> face-api-js [错误] 加载资源失败:在此服务器上找不到请求的 URL。(空,第 0 行)
- sql - 转换 PostgreSQL 中的时间戳数组(不在表中)
- r - 创建具有最大值的新列
- react-native - 如何验证 AsyncStorage 在 react-native 中是否可用
- python - .plot() 保留旧图并每次在其上绘制新图
- html - TikZJax 生成的 svg 中的一些数学符号渲染不正确
- postman - 邮递员 - 未在正文的预览选项卡上呈现响应 - 仅显示一个小缩略图
- python - 查找数组对 (a,b) 的数量,其中 abs(ab) = k in O(n)