Paginação SQL Server

As informações que temos são:

PageIndex <- Página Atual
PageCount <- Quantidade de Registros por página
PK <- Chave primária da tabela
TableName <- Nome da Tabela

Agora precisamos montar nossa consulta de maneira a filtrar somente os dados necessários, utlizamos uma sub-consulta para isso:

SELECT TOP (PageCount) PK FROM TableName
WHERE (PK NOT IN
(SELECT TOP (PageIndex * PageCount ) PK FROM TableName)
)

Primeiro fazemos uma consulta que pega somente a quantidade de dados necessária para a página atual.
Por exemplo, se estivermos na página 10 e cada página puder conter no máximo 5 registros essa consulta vai retornornar os 50 primeiros registros apenas, eliminando todo o resto não necessário.

Agora queremos selecionar somente a quantidade a ser exibida na página e é isto que nossa consulta principal faz, ela seleciona somente a quantidade que eu quero dentro da tabela retoanada pela consulta, ela retorna somente 5 registros que não estão dentro da consulta dela, os 5 próximos no caso.

Pronto temos uma paginação feita diretamente no banco de dados, elevando a performance da aplicação sendo que o SQL é inteligente ao ponto de eliminar todos os registros que ele não vai usar, com isso poderemos ter muito mais consultas ao mesmo tempo sem perda de performance, aliado ao Atlas isso da uma respostas instantânea facilitando a vida de todo mundo!

Fonte: Linha de Código – Murilo Maciel Curti

Leia mais em:

http://www.guj.com.br/java/7380-sql-server-paginacao-via-sql
http://www.linhadecodigo.com.br/Dica.aspx?id=1269
http://imasters.uol.com.br/artigo/4178/aspnet/pagi…_dados_com_sqlserver_20002005/
http://www.devparadise.com/technoweb/code/sql/a453.php

No comments yet.