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!
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
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