在 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中文網其他相關文章!