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

Henter det samlede antal rækker fra OFFSET / FETCH NEXT

Jeg stødte på nogle præstationsproblemer ved at bruge COUNT() OVER()-metoden. (Jeg er ikke sikker på, om det var serveren, da det tog 40 sekunder at returnere 10 poster og så senere ikke havde nogen problemer). Denne teknik fungerede under alle forhold uden at skulle bruge COUNT( ) OVER() og opnår det samme:

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


  1. postgresql indeks på streng kolonne

  2. Sådan inkluderes mere end én partition i en enkelt select-sætning i Oracle

  3. Sammenlign to skemaer og opdater det gamle skema med de nye kolonner i det nye skema

  4. Hierarkiske data i Linq - muligheder og ydeevne