Bei der Verwendung der Methode COUNT() OVER() bin ich auf einige Leistungsprobleme gestoßen. (Ich bin mir nicht sicher, ob es der Server war, da es 40 Sekunden dauerte, um 10 Datensätze zurückzugeben, und später keine Probleme mehr hatte.) Diese Technik funktionierte unter allen Bedingungen, ohne dass COUNT( verwendet werden musste ) OVER() und erreicht dasselbe:
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