Velocidade de Stored Procedures
28/10/2003
0
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
[color=red:34f2c22240][/color:34f2c22240]
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)
[color=red:34f2c22240][/color:34f2c22240]
EXEMPLO 2
CREATE PROCEDURE stpBusca
@CODIGO INT
SELECT CODIGO, NOME FROM CADASTRO
WHERE CODIGO = @CODIGO[/b][/code]
EXEMPLO 1
[color=red:34f2c22240][/color:34f2c22240]
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)
[color=red:34f2c22240][/color:34f2c22240]
EXEMPLO 2
CREATE PROCEDURE stpBusca
@CODIGO INT
SELECT CODIGO, NOME FROM CADASTRO
WHERE CODIGO = @CODIGO[/b][/code]
Wanderley
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)