加快分页查询大量数据速度的一种方法

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

SELECT * FROM t1 LIMIT B OFFSET A;

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

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

SELECT * FROM t1 WHERE id > C LIMIT B;

优点是:每次查询的数据量都为B,速度不会变慢;

缺点是:需要知道上个分页最后一条数据的ID,即C。因此只适合连续的分页查询数据。

目录