为什么相同的mysql sql的icp在5.6和5.7之间有两个结果

问题描述 投票:0回答: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,
  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 result

5.7结果5.7 result

mysql innodb
1个回答
1
投票

首先,不仅可以预期到,较新版本的数据库产品可能会为查询计划创建不同的输出,这也是您想要的:您希望显示改进。

现在:查询计划的要旨是100%相同:5.6中存在的所有列在5.7中都相同显示-因此查询计划本身未更改。

更改之处在于,较新的版本显示了两列-由于在5.7中新增了对不同分区的并行查询的支持,因此partitions column很容易解释。

[filtered]列源自查询计划程序中的优化:显然,条件的选择性对于查询计划非常重要,显然在查询运行之前尚不知道确切的选择性,但是较新的查询计划程序会通知您,它用。这是一件好事。

© www.soinside.com 2019 - 2024. All rights reserved.