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

Qual è il modo migliore per eseguire l'impaginazione su SQL Server?

ALTER PROCEDURE [dbo].[SP_tblTest_SelectSpecificRecordsWithCTE]
    @FromRow int = 1000000,
    @PgSize int = 10
AS
BEGIN
    ;WITH RecordsRN AS
    (
        select ID, colValue, ROW_NUMBER() over(order by colvalue) as Num from tblTest
    )
    SELECT ID Value, colValue Text FROM RecordsRN WHERE Num between @FromRow AND (@[email protected])
END

questa è la query che sto usando per il paging. usalo e otterrai i 10 record desiderati in 4-5 secondi. sto ottenendo 10 record in 3 secondi e i record totali nel mio db sono 10 milioni, non usare i primi 10 porteranno solo gli stessi 10 record ogni volta. nel mio caso sto mantenendo la dimensione della pagina e il numero di riga iniziale (@FromRow) nella sessione e passo questi due valori alla procedura memorizzata di seguito indicata e ottengo il risultato. Inoltre, se stai usando SQL 2012 potresti voler usare OFFSET e Recupera le prossime 10 righe tipo di cose. cerca su google la parola chiave OFFSET e vedrai il risultato desiderato in alto.

grazie