sql >> Databasteknik >  >> RDS >> Sqlserver

Får totalt antal rader från OFFSET / FETCH NEXT

Jag stötte på några prestandaproblem med COUNT() OVER()-metoden. (Jag är inte säker på om det var servern eftersom det tog 40 sekunder att returnera 10 poster och sedan inte hade några problem.) Den här tekniken fungerade under alla förhållanden utan att behöva använda COUNT( ) OVER() och åstadkommer samma sak:

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. Hur man jämför två arrayer och väljer bara de icke-matchande elementen i postgres

  2. JDBC-parameter verifyServerCertificate=false ansluter utan behov av ett klientnyckellager och truststore

  3. Vad gör group by exakt?

  4. Spatial Index används inte