COUNT() OVER() メソッドを使用すると、パフォーマンスの問題が発生しました。 (10 レコードを返すのに 40 秒かかり、その後は問題が発生しなかったため、サーバーが原因かどうかはわかりません。) この手法は、COUNT( を使用する必要なく、すべての条件下で機能しました。 ) OVER() と同じことを達成します:
DECLARE
@PageSize INT = 10,
@PageNum INT = 1;
WITH TempResult AS(
SELECT ID, Name
FROM Table
), TempCount AS (
SELECT COUNT(*) AS MaxRows FROM TempResult
)
SELECT *
FROM TempResult, TempCount
ORDER BY TempResult.Name
OFFSET (@PageNum-1)*@PageSize ROWS
FETCH NEXT @PageSize ROWS ONLY