SQL - limitando o número de linhas ( registros) retornados.

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 2000.

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.

Até a próxima...