Jag stötte på några prestandaproblem med COUNT() OVER()-metoden. (Jag är inte säker på om det var servern eftersom det tog 40 sekunder att returnera 10 poster och sedan inte hade några problem.) Den här tekniken fungerade under alla förhållanden utan att behöva använda COUNT( ) OVER() och åstadkommer samma sak:
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