索引下推,也叫索引条件下推。
索引下推是MySQL5.6新添加的特性,用于优化数据的查询。
在MySQL5.6之前,查询的时候根据非主键索引的字段进行查找并得到匹配的行的主键值,再用得到的主键去聚簇索引中查找对应的数据行,然后将结果返回给MySQL server层,在server层判断是否符合条件。
在MySQL5.6及以上版本,可以使用索引下推的特性。当存在索引的列做为判断条件时,MySQL server将这一部分判断条件传递给存储引擎,然后存储引擎会筛选出符合MySQL server传递条件的索引项,即在存储引擎层根据索引条件过滤掉不符合条件的索引项,然后回表查询得到结果,将结果返回给MySQL server。
可以看到,有了索引下推的优化,在满足一定的条件下,存储引擎层会在回表查询之前对数据进行过滤,可以减少存储引擎回表查询的次数。