Array
(
)

Velocidade de Stored Procedures

Wanderley
   - 28 out 2003

Se eu definir uma stored procedure onde o sql de retorno for variável (exemplo 1), a velocidade de execução será menor do que uma stored procedure com um sql fixo (exemplo 2).

EXEMPLO 1

CREATE PROCEDURE stpBusca
@CODIGO INT, @NOME VARCHAR(50)
AS
Declare @SQL nvarchar(500) --Comando SQL a ser executado
Declare @CONDICAO nvarchar(500) --Cláusula WHERE do SQL

-- Definindo a Clausula WHERE
Set @CONDICAO = ´(1=1) ´

--Se o Código tiver sido informado e for um Numerico
If (@CODIGO <> ´´) and (ISNUMERIC(@CODIGO) = 1)
Set @CONDICAO = @CONDICAO + ´ AND CODIGO = ´+quotename( @CODIGO , ´´´´)

--Se a Descricao tiver sido informada
If @NOME <> ´´
Set @CONDICAO = @CONDICAO + ´ AND NOME =´+quotename( @NOME , ´´´´)
End

--Construindo o comando SQL
Set @SQL = ´ SELECT CODIGO, NOME FROM CADASTRO
WHERE ´+@CONDICAO
--Executando o SQL
EXECUTE (@SQL)

EXEMPLO 2
CREATE PROCEDURE stpBusca
@CODIGO INT

SELECT CODIGO, NOME FROM CADASTRO
WHERE CODIGO = @CODIGO[/tagcod]