MySQL 索引条件下推 Index Condition Pushdown
发布时间:2022-09-15 15:10:51 所属栏目:MySql教程 来源:
导读: MySQL 索引条件下推 Index Condition Pushdown 出现在MySQL5.6及之后的版本中,能大幅提升查询效率,原因如下:
内容摘录自《深入理解MariaDB和MySQL》
下面使实验,使用官方提供的employees
内容摘录自《深入理解MariaDB和MySQL》
下面使实验,使用官方提供的employees
MySQL 索引条件下推 Index Condition Pushdown 出现在MySQL5.6及之后的版本中,能大幅提升查询效率,原因如下: 内容摘录自《深入理解MariaDB和MySQL》 下面使实验,使用官方提供的employees 测试数据库演示。 > useemployees ; > show create table employees \G ***************************[ 1. row ]*************************** Table| employees Create Table | 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`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 > alter table employees add index idx_lastname_firstname(last_name,first_name); 关闭ICP: > set optimizer_switch='index_condition_pushdown=off'; > explain extended select * from employees where last_name='Action' and first_name LIKE '%sal' ; ***************************[ 1. row ]*************************** id | 1 select_type | SIMPLE table | employees type | ref possible_keys | idx_lastname_firstname key | idx_lastname_firstname key_len | 18 ref | const rows | 1 filtered | 100.0 Extra | Using where 查询条件中的first_name 这个前面%匹配导致无法用到整个idx_lastname_firstname 索引的,只能根据last_name字段过滤部分数据,然后在里面找出符合first_name列 %sal的行记录。 但是MySQL 索引,如果开启ICP,则执行计划如下: MySQL 索引_mysql删除索引_mysql索引和聚合索引 > set optimizer_switch='index_condition_pushdown=on'; > explain extended select * from employees where last_name='Action' and first_name LIKE '%sal' \G ***************************[ 1. row ]*************************** id | 1 select_type | SIMPLE table | employees type | ref possible_keys | idx_lastname_firstname key | idx_lastname_firstname key_len | 18 ref | const rows | 1 filtered | 100.0 Extra | Using index condition 原理: 索引比较是在InnoDB存储引擎层进行的。而数据表的记录比较first_name条件是在MySQL引擎层进行的。开启ICP之后,包含在索引中的数据列条件(即上述SQL中的first_nameLIKE %sal') 都会一起被传递给InnoDB存储引擎,这样最大限度的过滤掉无关的行。 (编辑:拼字网 - 核心网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐