Při použití metody COUNT() OVER() jsem narazil na nějaké problémy s výkonem. (Nejsem si jistý, jestli to byl server, protože vrácení 10 záznamů trvalo 40 sekund a později už nebyly žádné problémy.) Tato technika fungovala za všech podmínek, aniž by bylo nutné použít COUNT( ) OVER() a provede stejnou věc:
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