SQL - limitando o número de linhas retornados

 Já falei sobre arrays mas relacionados com a linguagem VB .NET. O conceito em si é o mesmo mas a sintaxe em C# é diferente por isso vou começar do início para apresentar os Arrays e como usá-los na linguagem C#.

Se você esta preenchendo uma combo, caixa de listagem ou um gride com uma grande quantidade de registros e isto está demorando muito tempo , não fique procurando otimizar sua rotina ; o problema talvez não esteja ai.

Já recebi consultas para otimizar rotinas que ao carregar um controle com 10.000/20.000 registros estavam demorando demais.

Qual a solução ?

Simples : não preencher o controle com tantos registros, i.e , limitar a quantidade de linhas retornadas do banco de dados.

A ídéia é exibir somente o que cliente precisa e quando ele precisa. É claro que a sua rotina deve estar otimizada . Para fazer isto geralmente usamos consultas SQL.

Vamos mostrar algumas formas de limitar a quantidade de registros retornados usando o SQL para uma base de dados SQL Server.

1- Usando SLECT TOP n - Para consultas simples usando SELECT podemos usar a cláusula TOP n ( n é o numero de registros a retornar) antes da instrução SELECT.

A sintaxe seria:

  SELECT TOP 20 nome, endereco, email
  FROM tabela
  ORDER BY nome

2- Usando Stored Procedures (ROWCOUNT) - Outra maneira de limitar a quantidade de linhas é usar a variável de ambiente do SQL 2000 - ROWCOUNT - e atribuir a ela a quantidade de linhas que deverá ser retornada.

CREATE PROCEDURE Contatos
(
   @ModuloID int,
   @maxrows int = 0
)
AS
   SET ROWCOUNT @maxrows         
     SELECT 
       ItemID,
       Data,
       Nome,
       Email,
    FROM
       Contatos
    WHERE
       ModuloID = @ModuloID

Declarando o parâmetro @maxrows como sendo igual a zero faz com que todos os registros da seleção sejam retornados.

Outro recurso bem simples é usar uma cláusula Where e filtrar os registros selecionados usando um critério e a seguir definir a paginação dos dados.

Geralmente a instrução usa a sintaxe básica:   WHERE [condição(ões)]

Podemos usar diversos operadores com esta cláusula :
  • AND e OR
  • IN
  • NOT IN
  • BETWEEN
  • NOT BETWEEN
Até a próxima... 

Referências:


José Carlos Macoratti