Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Qual é a melhor maneira de realizar a paginação no 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

essa é a consulta que estou usando para paginação. use-o e você obterá os 10 registros desejados em 4-5 segundos. estou recebendo 10 registros em 3 segundos e o total de registros no meu db é de 10 milhões, não use o top 10, ele só trará os mesmos 10 registros todas as vezes. no meu caso, estou mantendo o tamanho da página e o número da linha inicial (@FromRow) na sessão e passo esses dois valores para o procedimento armazenado abaixo e obtenho o resultado. e buscar as próximas 10 linhas. pesquise no google sobre a palavra-chave OFFSET e você verá o resultado desejado no topo.

obrigado