Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Ottenere il conteggio totale delle righe da OFFSET / FETCH NEXT

Ho riscontrato alcuni problemi di prestazioni utilizzando il metodo COUNT() OVER(). (Non sono sicuro che fosse il server poiché ci sono voluti 40 secondi per restituire 10 record e in seguito non ha avuto problemi.) Questa tecnica ha funzionato in tutte le condizioni senza dover utilizzare COUNT( ) OVER() e realizza la stessa cosa:

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