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