limit 分页优化

当需要分页的页码偏移量非常大时, 比如 LIMIT 20 OFFSET 10000 此时能想到的优化方法一般有两种, 第一种限制分页的数量, 降低访问偏移量较大页码的频次, 第二种就是尽可能的优化偏移量的性能.

限制分页的数量

深度分页的数据一般来说并不是热门数据, 那么

优化偏移量的性能

  1. 尽可能地避免在主 SELECT Where 后使用 LIMIT 进行分页, 使用子查询进行分页, 在有子查询的情况下是优先进行子查询的, 子查询在 SELECT 的时候尽可能的只使用主键索引, 因为查询主键索引是无需回表的. 子查询在分页查询后在主 SELECT Where 后通过 IN 的方式查询数据

  2. 避免掉Offset 比如 LIMIT 10000 OFFSET 20 先查出来第 10000 条的主键值, 在通过 > 的条件修饰符来避免掉 OFFSET, 直接进行 LIMIT

深层次的优化

... todo ...

比较合理的方式还是尽可能的降低深层分页的查询, 毕竟深度分页比较误解