Usuário com melhor resposta
Query executa mais rápido que table function

Pergunta
-
Boa tarde
Estou com uma dificuldade de entender o que está ocorrendo aqui.
Tenho uma query e desta foi criada uma function.
O que está ocorrendo é que se eu executo a query, esta demora no máximo um segundo.
Porém quando executo a function que é exatamente a mesma query com os mesmos parâmetros, esta demora entre 3 e 4 segundos.
Alguém sabe me dizer algum provável motivo disto estar ocorrendo?
valeuquinta-feira, 5 de fevereiro de 2015 15:53
Respostas
-
Deleted
- Sugerido como Resposta Eduardo.Romero sexta-feira, 6 de fevereiro de 2015 18:21
- Marcado como Resposta Ricardo Barbosa Cortes segunda-feira, 9 de fevereiro de 2015 12:04
sexta-feira, 6 de fevereiro de 2015 09:48 -
Júlio,
Concordo com o Jose.Diz, veja tembém este post:
http://www.sql-server-performance.com/2013/avoiding-parameter-sniffing-in-sql-server/
Acredito que poderá ajudar de maneira mais fácil a entender como ocorre o parameter sniffing.
Pedro Antonio Galvao Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]
- Sugerido como Resposta Eduardo.Romero sexta-feira, 6 de fevereiro de 2015 18:21
- Marcado como Resposta Ricardo Barbosa Cortes segunda-feira, 9 de fevereiro de 2015 12:04
sexta-feira, 6 de fevereiro de 2015 12:40
Todas as Respostas
-
Olá José
A function é implementada como uma table function, tem a seguinte estrutura:
CREATE FUNCTION [dbo].[NomeDaFunction](@Id int, @IdOutro int, @IdNulavel int = NULL)
RETURNS TABLE
AS
RETURN [Aqui vai um select grande porém único];valeu
quinta-feira, 5 de fevereiro de 2015 16:18 -
Olá
Sim é uma inline table valued, os planos de execução são muito diferentes, mas não entendi exatamente sobre o parameter sniffing, isso em uma função inline é possível, pergunto pois já vi em stored procedures mas não em functions, teria alguma dica a mais para este caso?
valeu
- Editado Julio C G sexta-feira, 6 de fevereiro de 2015 09:34
sexta-feira, 6 de fevereiro de 2015 09:33 -
Júlio,
Concordo com o Jose.Diz, veja tembém este post:
http://www.sql-server-performance.com/2013/avoiding-parameter-sniffing-in-sql-server/
Acredito que poderá ajudar de maneira mais fácil a entender como ocorre o parameter sniffing.
Pedro Antonio Galvao Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]
- Sugerido como Resposta Eduardo.Romero sexta-feira, 6 de fevereiro de 2015 18:21
- Marcado como Resposta Ricardo Barbosa Cortes segunda-feira, 9 de fevereiro de 2015 12:04
sexta-feira, 6 de fevereiro de 2015 12:40