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 em “Paginação de registros no SQL Server

Deixe uma resposta

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.