分页查询

select * from data limit 0,10;

直接进行分页查询,从 第 0 条开始,查 10条数据,会出现一个问题,可能查询出的数据不是 id 1-10。因为在优化器选择索引时,如果表内有其他索引,查询就可能会走已经创建的索引,而不是主键索引,导致查出的前十条数据不是 根据 id 排序的前十条。

解决方法就是去除表中的索引

查第 1000 万页

select * from data limit 10000000,10;

数据量越大,查询速度越慢。

覆盖索引 +子查询

#覆盖索引
select id from data limit 10000000,10;
#子查询
select d.* from data d join
(select id from data limit 10000000,10) 
t on d.id=t.id;

标签记录

select * from data 
where id >10000000
order by id
limit 10;

10000000 是上次查询的最后一条 id
缺点:

  • 只能连续页查询
  • 需要自增的字段