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