mysql索引下推
索引下推的优势:通过下推联合索引的字段,减少回表次数
例:对于联合索引(name,age),正常情况下是按照最左前缀原则。
SELECT*FROM employees WHERE name like 'LiLei%' AND age = 22
没有索引下推的情况下
这种情况只会走name字段索引,因为根据name字段过滤完,得到的索引行里的age和position是无序的,无法很好的利用索引。
在MySQL5.6之前的版本,这个查询只能在联合索引里匹配到名字是'LiLei'开头的索引,然后拿这些索引对应的主键逐个回表,到主键索引上找出相应的记录,再比对age这个字段的值是否符合。
存在索引下推
MySQL 5.6引入了索引下推优化,可以在索引遍历过程中,对索引中包含的所有字段先做判断,过滤掉不符合条件的记录之后再回表,可以有效的减少回表次数。
使用了索引下推优化后,上面那个查询在联合索引里匹配到名字'LiLei'
开头的索引之后,同时还会在索引里过滤age这个字段,拿着过滤完剩下的索引对应的主键id再回表查整行数据。
浙公网安备 33010602011771号