Paginação de registros no SQL Server

Pessoal, a muito tempo eu venho sendo questionado sobre a mesma funcionalidade, como fazer uma query para criar a paginação dos dados igual ao recurso limit do MySQL – “No mysql temos o limit… blá, blá, blá”, sempre a mesma história.

 

Então, ai esta o código.

with ctLimit(
ordem, [client-IP], [client-hostname])
as (
select row_number()over(order by datetime asc) as Ordem ,
[client-IP]
, [client-hostname] from dbo.MsgTrackingLogs
)
select * from ctLimit where ordem between 10000 and 200000

E por falar nisso, fiz o teste desta query em uma tabela sem índices de 2313457 registros e para pegar uma faixa de 100 registros demorou menos de um segundo.

 

Por fim, me resta dizer que t-SQL possuí diversos recursos a serem explorados nas mais diversas situações do dia-a-dia. Em algumas aplicações pode-se analisar a implementação deste recurso para paginação diretamente o t-SQL ao invés de carregar um DataSet com milhões de linhas.

 

 

Abraço, Rodrigo.

Ps. Um abraço especial para um grande desenvolvedor, o meu amigo Pablo!

2 comentários sobre “Paginação de registros no SQL Server

  1. Pablo disse:

    Mazaahh!!
    Grato pela informação! Com certeza é uma pergunta que perturbou muitas pessoas.
    Não esperava nada diferente de um grande profissional e amigo como você.

    Abraço
    Pablo Ficher

  2. Pablo Ficher disse:

    Mazaahh!!
    Grato pela informação! Com certeza é uma pergunta que perturbou muitas pessoas.
    Não esperava nada diferente de um grande profissional e amigo como você.

    Abraço
    Pablo Ficher

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s