Paginação no SQL Server 2005

Uma das vantagens do MySQL em relação ao MS SQL Server é a cláusula LIMIT, muito útil em paginação de resultados já que permite pegar somente uma faixa de resultados, como em:

select * from tabela limit 10,10

Ele retorna os próximos 10 resultados começando pelo décimo resultado. Ou seja, numa paginação de 10 ítens, essa seria a query da segunda página.

Até o SQL Server 2000 era inviável fazer algo semelhante com muitos registros sem derrubar o servidor. Agora, uma das bem-vindas novidades do SQL Server 2005 é a função ROW_NUMBER(), que permite fazer algo como o LIMIT com uma boa performance.

with paginacao as
(
select row_number() over (order by id) as ‘rownumber’, *
from tabela
)
select * from paginacao
where rownumber between 10 and 20

2 comentários em “Paginação no SQL Server 2005”

Deixe um comentário