sql >> Base de Datos >  >> RDS >> Sqlserver

Obtener el recuento total de filas de OFFSET / FETCH NEXT

Encontré algunos problemas de rendimiento al usar el método COUNT() OVER(). (No estoy seguro de si fue el servidor, ya que tardó 40 segundos en devolver 10 registros y luego no tuvo ningún problema). Esta técnica funcionó en todas las condiciones sin tener que usar COUNT( ) OVER() y logra lo mismo:

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