Que tal compañeros..!!
Tengo la siguiente consulta en la cual obtengo las sumas
de unas tablas que se relacionan con una principal, las
tablas tienen alrededor de 500 registros, y se tarda
muchisimo para sacar los totales, alrededor de 18 seg.,
tengo 4 indices en cada tabla y no se a que se deba.
En un mismo indice tengo 2 campos, no se si esto este bien
hecho, o deberia poner un nombre de indice para cada campo.
Quisiera saber si puedo poner indices en las Fechas,en los
campos de Bit, en los campos de texto, incluso tambien en
los campos numericos para agilizar los SUM.
este es el procedure.
Alter Procedure Acumulado_Cv
@Pc char(15)
AS
SELECT C.Id_Chofer,C.Nombre
Chofer,Fleteros.Id_Fletero,Fleteros.Nombre Fletero,isnull
(e.embanques,0) Embanques,ISNULL(en.abonos,0) Abonos,ISNULL
(ent2.Combustibles,0) Combustibles,
Isnull(f.fletes,0)Fletes
FROM Choferes C
LEFT JOIN
(Select Id_Chofer,Sum(Volumen*.55)Fletes from Fletes WHERE
No_tarja<>'si' AND Convert(char(1),pagado)=0
GROUP BY Id_Chofer)f
on C.Id_Chofer = f.Id_Chofer
LEFT JOIN (Select Id_Chofer,sum(Volumen*Precio)Embanques
from Embanques
INNER JOIN Parajes ON
Parajes.Id_Paraje=Embanques.Id_Paraje
WHERE Quincena<>'SI' AND Convert(char
(1),Pagado)=0
GROUP BY Id_Chofer)e
ON C.Id_Chofer=e.Id_Chofer
LEFT JOIN
( select Id_Chofer,sum(cantidad)abonos from
Entregas where concepto<>'si' AND Convert(char(1),pagado)=0
GROUP BY Id_chofer) en
on C.Id_Chofer = en.Id_Chofer
LEFT JOIN
( select Id_chofer, sum(cantidad)combustibles
from Entregas2 where concepto<>'si' AND convert(char
(1),pagado)=0
GROUP By Id_Chofer) ent2
on C.Id_Chofer = ent2.Id_Chofer
INNER JOIN
Fleteros ON C.Id_Fletero=Fleteros.Id_Fletero
WHERE c.id_chofer IN(Select Id_Chofer from Choferes_Rel
WHERE NombrePc=@Pc)
Leer las respuestas