Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Obtenir le nombre total de lignes à partir de OFFSET / FETCH NEXT

J'ai rencontré des problèmes de performances en utilisant la méthode COUNT() OVER(). (Je ne sais pas si c'était le serveur car il a fallu 40 secondes pour renvoyer 10 enregistrements, puis plus tard, il n'y a eu aucun problème.) Cette technique a fonctionné dans toutes les conditions sans avoir à utiliser COUNT( ) OVER() et accomplit la même chose :

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