limit 分页优化
当需要分页的页码偏移量非常大时, 比如 LIMIT 20 OFFSET 10000
此时能想到的优化方法一般有两种, 第一种限制分页的数量, 降低访问偏移量较大页码的频次,
第二种就是尽可能的优化偏移量的性能.
限制分页的数量
深度分页的数据一般来说并不是热门数据, 那么
优化偏移量的性能
-
尽可能地避免在主
SELECT
Where 后使用 LIMIT 进行分页, 使用子查询进行分页, 在有子查询的情况下是优先进行子查询的, 子查询在 SELECT 的时候尽可能的只使用主键索引, 因为查询主键索引是无需回表的. 子查询在分页查询后在主SELECT
Where 后通过 IN 的方式查询数据 -
避免掉Offset 比如
LIMIT 10000 OFFSET 20
先查出来第 10000 条的主键值, 在通过 > 的条件修饰符来避免掉 OFFSET, 直接进行 LIMIT
深层次的优化
... todo ...
比较合理的方式还是尽可能的降低深层分页的查询, 毕竟深度分页比较误解