Revisão 1 postado em artigos TechNet por Durval Ramos em 14/3/2014 12:39:54
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.
--CRIANDO A TABELA PARA DEMONSTRAÇÃO
CREATETABLEdbo.TB_EXAMPLE(
ID_EXAMPLEintNOTNULLIDENTITY(1,1),
NM_EXAMPLEvarchar(25)NOTNULL,
DT_CREATEdatetimeNULLDEFAULT(GETDATE())
);
GO
--PAGINANDO OS REGISTROS COM 5 LINHAS POR "PÁGINA"
DECLARE@NumeroDaPaginaASINT, @TamanhoDaPaginaAS INT
SET@NumeroDaPagina= 2
SET@TamanhoDaPagina= 5
--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
--EXECUTING THE "DEFAULT" STORED PROCEDURE
EXEC PR_PAGING
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