Mira los planes vas a ver que calcula el resultado para cada registro
usando nested loop y en el otro caso puede aplicar optimizaciones.

Yo trataria de hacer una table valued function (usando group by y sum)
o una vista con goup by y sum o una vista indexada con el contenido de
la vista interna y el group by mas el sum que me devuelva toda la
tabla completa. Luego el SQL aplicará las optimizaciones que
correspondan.

Yo probaria con una vista.

Saludos

--
--------------------------------
Atte.
Ing. Jose Mariano Alvarez



On 11/29/06, Diego Jancic <[EMAIL PROTECTED]> wrote:
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