> 针对 深分页查询慢的问题,本文介绍了两种核心优化方案:一是推荐使用索引“书签法”替代 ,二是使用“延迟关联”先查ID再关联全表,从而避免扫描大量数据。 这是一个非常经典且常见的数据库性能问题。 这种深分页查询之所以效率低下,核心原因在于 。 我们先来分析一下为什么 会这么慢。 问题根源:为什么深分页查询慢? 数据库执行 时,它的工作流程通常是这样的: 1. 根据 条件和 子句,从存储中获取所有符合条件的行。 2. 在内存(或临时文件)中进行排序。 3. 扫描并跳过(discard)前面的 条记录。在我们的例子中,就是 扫描并扔掉 1,000,000 条记录。 4. 最后,再取 条(10条)记录作为结果返回。 瓶颈就在第3步。数据库需要实实在在地读取并处理那100万条数据,即使你根本不需要它们。这导致了巨大的 I/O 和 CPU 浪费,随着 的增大,查询时间会线性增长。 --- 优化方案 优化的核心思想是 避免扫描并跳过大量的行。下面介绍几种从优到劣的常用优化策略。 方案一:基于索引的“书签”法(Seek Method / Keyset Pagination) 这是最高效、最推...