索引下推并不是新技术,通常情况会被人忽略。索引下推是 mysql5.6
版本中对之前版中索引查询的优化方式。
mysql5.6
之前是怎么进行索引查询的呢?他会首先根据索引来查找记录,再根据 where
条件进行过滤。
举例说明,存在怎么一张表
1 | CREATE TABLE `user` ( |
我们查询年龄为18岁,且命命中是'tyltr'的用户
。
1 | select * from `user` where age=12 and name='tyltr'; |
之前版本的查询是这样的:查询出所有age=18
的数据,然后在使用name='tyltr'
对已经查询出来的数据进行过滤。
5.6版本使用了索引下推的查询是这样的: 查询使用索引age=18
的数据,同时判断是否name='tyltr'
,再获取数据。
看似两种区别不大,为了好理解两者的区别。那我们类比一个现实生活中的场景吧。
假如,警察局接到举报。逃犯XX窝藏在L村。警察去L抓人。
如果类比不支持索引下推的查询
,警察抓人的流程是这样的。把L村所有居民统统抓到警察局,然后再警察局里一个一个的对比是不是逃犯XX。
如果是则抓获XX,不是则释放。这种做法是不是有些笨。
如果类比支持索引下推的查询
,警察抓人的流程是这样的。来到L村,在L村直接判断某村民是不是逃犯XX。如果是,则进行抓捕。这样是不是效率就提高了。