0
点赞
收藏
分享

微信扫一扫

mysql 索引优化特性之索引下推

菜菜捞捞 2021-09-29 阅读 72

查询开启状态

SHOW VARIABLES LIKE '%optimizer_switch%'

我们可以通过修改系统变量optimizer_switch的index_condition_pushdown标志来控制

SET optimizer_switch = 'index_condition_pushdown=off'; 
SET optimizer_switch = 'index_condition_pushdown=on';

对于 test 表,我们现在有(a,b)联合索引,如果现在有一个需求,查出a='k'且b以“l”开头的记录,如下:

EXPLAIN SELECT * FROM test WHERE a = 'k' AND  b LIKE 'l%'  

有两种执行可能:
1、根据(a,b)联合索引查询所有满足a = 'k'的记录,然后回表查询出相应的全行数据,然后再筛选出满足b LIKE 'l%' 的记录。


2、根据(a,b)联合索引查询所有满足a = 'k'的记录,直接筛选出满足b LIKE 'l%' 的索引,之后再回表查询全行数据。


明显的,第二种方式需要回表查询的全行数据比较少、减少了磁盘IO,这就是mysql的索引下推。

举报

相关推荐

0 条评论