左通配符和高limit值的优化--延迟关联
2019-01-16 本文已影响0人
飞翔的Tallgeese
使用场景
1.存在无法走索引的左通配符的模糊查询
2.高偏移值(limit)的查询
优化案例
eg.
原语句
SELECT * FROM t
WHERE
settle_serial_no LIKE '%xxxxxx%'
ORDER BY id DESC
limit 10000,5000 ;
执行时间:3.449s;执行计划如下图
采用延迟关联对原语句进行修改
SELECT * FROM t as a
JOIN
( SELECT id FROM t WHERE settle_serial_no LIKE '%xxxxxx%' order by id desc limit 10000,5000) as b
ON a.id = b.id ;
执行时间:0.91s;执行计划如下图
如果这个语句中没有limit条件的话,第二图执行计划里面会直接没有第一行,然后蓝框处会显示为using where;using index 也就是说走的是主键的覆盖索引