索引下推

索引下推(只发生在联合索引中)

比如一个表中有四个字段id,name,age,gender, 创建联合索引(name,age)

查询
select * from t1 where name = ‘zhangsan’ and age = 10

在没有索引下推的优化:
1、先根据name把符合的数据从存储引擎拉到mysql的server层
2、在server层按照age进行过滤

在这里插入图片描述

索引下推优化:
从存储引擎拉取数据的时候直接按照name和age进行判断,将符合的结果返回mysql的server层
在这里插入图片描述
1、不使用索引条件下推优化时存储引擎通过索引检索到数据,然后返回给MySQL服务器,服务器然后判断数据是否符合条件。
2、当使用索引条件下推优化时,如果存在某些被索引的列的判断条件时,MySQL服务器将这一部分判断条件传递给存储引擎,然后由存储引擎通过判断索引是否符合MySQL服务器传递的条件,只有当索引符合条件时才会将数据检索出来返回给MySQL服务器。索引条件下推优化可以减少存储引擎查询基础表的次数,也可以减少MySQL服务器从存储引擎接收数据的次数。

猜你喜欢

转载自blog.csdn.net/qq_45100361/article/details/113808560