MySQL:LIMIT语句优化思路

it2024-11-20  2

例如我们有一个很简单的查询第3W页数据的sql

select * from employees limit 300000,10;

有以下优化方案,首先我们给emp_no字段设置索引

方案1:覆盖索引 select emp_no from employees limit 300000,10;
如果我们一定要查询所有字段呢
方案2:覆盖索引+join select * from employees e inner join (select emp_no from employees limit 300000,10) t using (emp_no); 方案3:覆盖索引+子查询 select * from employees where emp_no >= (select emp_no from employees limit 300000,1) limit 10; 方案4:范围查询+limit语句 此方案得获得起始主键值 select * from employees where emp_no > 10010 limit 10; 方案5:如果能获得起始主键值 & 结束主键值 select * from employees where emp_no between 20000 and 20010; 方案6:业务上做一定的妥协 例如:禁止传入过大的页码等
最新回复(0)