慢sql优化

数据分页优化

select * from your_table where type = ? limit start, end;

limit的分页方式是查出select的所有数据,然后舍弃start之前的数据。因此对于大数据量,性能很低。

优化方案

偏移ID

-- 深分页慢sql,51sec
select * from emp where ename='svZLER' limit 1000000, 10;

-- 使用id回表优化查询,44sec
select * from emp where id in (select id from emp where ename='eMxdWz') limit 1000000, 10;

-- 子查询使用二级索引深分页,然后回表,37sec
select * from emp inner join (select id from emp where ename='eMxdWz' limit 1000000, 10) b using(id) ;
-- b using(id) 相当于 on b.id = emp.id

分段查询