Hola gente!,
Estoy con una consulta que utiliza una funcion, y esa funcion a su vez
utiliza una vista. Haciendo esto tarda unos 50 segundos en ejecutarse,
pero si copio el contenido de la funcion y lo pongo como un subselect
de la consulta principal tarda 4 segundos o menos...

Lo explico mejor, esto tarda 50 seg:

select dbo.Funcion1(campo1)
from tabla

y la Funcion1 es esta:

CREATE FUNCTION [dbo].[Funcion1]
(
        @campo1         int
)
RETURNS int
AS
BEGIN
        DECLARE @var int

        SELECT          @var = sum(...)
        FROM    vista
        WHERE   campo1 = @campo1

        RETURN  @var
END



Ahora, si cambio lo anterior por esto, tarda 4 seg:

select  ( SELECT sum(...)
        FROM    vista v
        WHERE   v.campo1 = t.campo1 )
from tabla t


Solamente para sacarme la duda, alguien sabe que puede ser???

Gracias!,
Diego

Responder a