目录

分页查询大量数据时的加速优化

目录

在对大量数据进行分页查询时,我们经常使用LIMIT B OFFSET A的语法:

1
SELECT * FROM t1 LIMIT B OFFSET A;

但是,LIMIT B OFFSET A语法的原理是,先取出 (A+B) 条数据,然后将前 A 条数据丢弃,返回剩下的 B 条数据。在处理大量数据时,随着 OFFSET 值的增大,取出的数据量也越来越多,造成查询速度变慢。

一种处理方式是,使用WHERE筛选替代OFFSET

1
SELECT * FROM t1 WHERE id > C LIMIT B;

优缺点比较:

  • 优点:每次查询的数据量都为 B,速度不会变慢;
  • 缺点:需要知道上个分页最后一条数据的 ID,即 C。因此只适合连续的分页查询数据。