问题描述:
在返回查询列表时,常常需要对数据进行分页,当offset特别大的时候,limit语句性能会下降,因此想办法优化以下语句(运用索引)
select * from employees limit 0,10;
select emp_no from employees limit 300000,10;
select * from employees e inner join (select emp_no from employees limit 300000,10) t on e.emp_no = t.emp_no
select * from employees where emp_no >= (select emp_no from employees limit 300000,1) limit 10;
select * from employees limit 10; 上面语句返回的最大主键值是 10010 ,那么下一页的分页查询就可以这样写 select * from employees where emp_no > 10010 limit 10;
知道起始和结束主键值,分页SQL 可以写成这样。 select * from employees where emp_no between 20000 and 20010;