Podczas korzystania z metody COUNT() OVER() napotkałem pewne problemy z wydajnością. (Nie jestem pewien, czy był to serwer, ponieważ zwrócenie 10 rekordów zajęło 40 sekund, a później nie wystąpiły żadne problemy). Ta technika działała we wszystkich warunkach bez konieczności używania funkcji LICZBA ( ) OVER() i osiąga to samo:
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