在 SQL Server 中使用 OFFSET
进行分页对于大型数据集可能效率低下。 键集分页提供了一种更好的选择。
与行集分页(扫描所有前面的行)不同,键集分页使用唯一索引来直接访问页面的起始点。这显着减少了不必要的数据检索。 分页键(以及任何其他查询列)上的唯一索引对于最佳性能至关重要。
假设我们有一个名为 TableName
的表,其索引为 Id
,并且我们需要使用最新的 Id
值进行分页。
初始查询(第一页):
<code class="language-sql">SELECT TOP (@numRows) * FROM TableName ORDER BY Id DESC;</code>
后续查询:
<code class="language-sql">SELECT TOP (@numRows) * FROM TableName WHERE Id < @lastId ORDER BY Id DESC;</code>
其中 @lastId
是上一页结果中的最低 Id
值。
对于缺少唯一值的列,请在`ORDER BY`和`WHERE`子句中包含辅助列,并在两列上添加复合索引。
重要注意事项:
以上是键集分页如何比 OFFSET 提高 SQL Server 分页效率?的详细内容。更多信息请关注PHP中文网其他相关文章!