Quantcast
Channel: artigos TechNet
Viewing all articles
Browse latest Browse all 8688

Paginando uma Consulta

$
0
0
Revisão 1 postado em artigos TechNet por Durval Ramos em 14/3/2014 12:39:54


Introdução

Em alguns momentos é necessário otimizar os dados retornados para o usuário, removendo colunas desnecessárias de uma instrução e incluíndo condições na cláusula WHERE para que o usuário possa obter apenas os dados que realmente deseja visualizar.

Em situações críticas de pequenas empresas, com limitações de hardware e/ou softwares antigos, além de locais onde o acesso à Internet são limitados também são fatores que influenciam na necessidade de tornar a exibição de dados simples e com pequeno tráfego de rede.
  
Um dos recursos que podem ser utilizados para atender estes requisitos é a paginação.


Construindo o ambiente para Teste

Para que possamos reproduzir como este problema ocorre, vamos criar uma tabela para demonstração.


--CRIANDO A TABELA PARA DEMONSTRAÇÃO
CREATETABLEdbo.TB_EXAMPLE(
  ID_EXAMPLEintNOTNULLIDENTITY(1,1),
  NM_EXAMPLEvarchar(25)NOTNULL,
  DT_CREATEdatetimeNULLDEFAULT(GETDATE())
);
GO

--INSERINDO 1000 REGISTROS DIFERENTES NA TABELA
INSERTINTOTB_EXAMPLE (NM_EXAMPLE)VALUES ('Item de paginação '+CONVERT(VARCHAR,ISNULL(@@IDENTITY, 0)))
GO 1000

--CONSULTANDO OS 1000 REGISTROS
SELECT*FROM TB_EXAMPLE
GO




Paginando os registros com limite de linhas

Durante este momento, o registro pode ser visualizado e contabilizado...


--PAGINANDO OS REGISTROS COM 5 LINHAS POR "PÁGINA"
DECLARE@NumeroDaPaginaASINT, @TamanhoDaPaginaAS INT
SET@NumeroDaPagina= 2
SET@TamanhoDaPagina= 5

SELECT*FROM (
             SELECTROW_NUMBER()OVER(ORDERBYID_EXAMPLE)ASNumero,
                    ID_EXAMPLE,NM_EXAMPLE,DT_CREATEFROMTB_EXAMPLE
               )ASTBL
WHERENumeroBETWEEN ((@NumeroDaPagina - 1)* @TamanhoDaPagina+ 1)AND(@NumeroDaPagina*@TamanhoDaPagina)
ORDERBYID_EXAMPLE



Criando uma Procedure para facilitar o uso

Durante este momento, o registro pode ser visualizado e contabilizado...


--CREATING PROCEDURE FOR PROCESS AUTOMATIZED
CREATEPROCEDUREPR_PAGING
  @PageNumber smallint   = 1,
  @RowspPage  tinyint    = 10
AS
BEGIN
       SELECTID_EXAMPLE,NM_EXAMPLE,DT_CREATEFROM (
                    SELECTROW_NUMBER()OVER(ORDERBYID_EXAMPLE)ASNUMBER,
                                  ID_EXAMPLE,NM_EXAMPLE,DT_CREATEFROMTB_EXAMPLE
                           )ASTBL
       WHERENUMBERBETWEEN((@PageNumber- 1)*@RowspPage+ 1)AND(@PageNumber*@RowspPage)
       ORDERBYID_EXAMPLE
END
GO



Executando a Procedure

Durante este momento, o registro pode ser visualizado e contabilizado...


--EXECUTING THE "DEFAULT" STORED PROCEDURE
EXEC PR_PAGING

--EXECUTING THE STORED PROCEDURE TO "PAGE 2"
EXECPR_PAGING 2

--EXECUTING THE STORED PROCEDURE TO "PAGE 2" AND WITH JUST "4 ROWS"
EXECPR_PAGING 3, 4



Conclusão

Podemos ver que à paginação de uma instrução SELECT é simples e à otimização de processamento de dados pelo SQL tem um ganho considerável. Nas situações indicadas como críticas, o recurso de paginação de dados pode ajudar à tornar o trabalho do usuário muito mais simples e rápido.

Veja Também


Outros Idiomas

  • Paging a Query (en-US)

Tags: stub, Transact-SQL, Durval

Viewing all articles
Browse latest Browse all 8688


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>