hola buenas tardes, tengo la siguiente inquietud:
Primer Ejemplo tarda 8Segundos en traer un solo registro :
select a.Cdlocal,a.CdAlmacen,a.CdArticulo,sum(Case When a.FlgUnds=1 Then
a.Cantidad Else a.Cantidad*a.Multiplo end) as Cant_Vtas
from Ventad_Unida a inner Join Stock_Unido d
on a.Cdlocal=d.Cdlocal and a.cdAlmacen=d.CdAlmacen and
a.cdarticulo=d.CdArticulo
inner join Auxiliarpt b
on a.CdLaboratorio= b.Codigo and b.cdlocal='XXX'
inner join auxiliarpt6 c
on a.Cdlocal= c.codigo1 and a.cdalmacen=c.codigo2 and c.cdlocal='XXX'
where convert(char(10),a.FecDocumento,112)>=convert(char(10),DATEADD(DAY, -
d.NDias_Stock_Max,'20080416'),112)
and convert(char(10),a.FecDocumento,112)<'20080416'
Group by a.Cdlocal,a.CdAlmacen,a.CdArticulo
Segundo Ejemplo tarda 2Segundos en traer un solo registro, la diferencia es
que pongo el valor 30 en lugar de d.NDias_Stock_Max :
select a.Cdlocal,a.CdAlmacen,a.CdArticulo,sum(Case When a.FlgUnds=1 Then
a.Cantidad Else a.Cantidad*a.Multiplo end) as Cant_Vtas
from Ventad_Unida a inner Join Stock_Unido d
on a.Cdlocal=d.Cdlocal and a.cdAlmacen=d.CdAlmacen and
a.cdarticulo=d.CdArticulo
inner join Auxiliarpt b
on a.CdLaboratorio= b.Codigo and b.cdlocal='XXX'
inner join auxiliarpt6 c
on a.Cdlocal= c.codigo1 and a.cdalmacen=c.codigo2 and c.cdlocal='XXX'
where
convert(char(10),a.FecDocumento,112)>=convert(char(10),DATEADD(DAY, -30,'20080416'),112)
and convert(char(10),a.FecDocumento,112)<'20080416'
Group by a.Cdlocal,a.CdAlmacen,a.CdArticulo
Como ven hacen casi lo mismo, la unica diferencia es que en el ultimo select
pongo el valor 30 en lugar de obtenerlo del campo d.NDias_Stock_Max, hay
algo que estoy haciendo mal?
Porfavor agradecere sus comentarios gracias.
Nota:
Trabajo con SQL 2005 SP2
Ventad_Unida es una vista con 486,000 registros
Stock_Unido es una vista con 271,800 registros
Auxiliarpt es una tabla con datos de laboratorio seleccionados
auxiliarpt6 es una tabla con datos de local y almacen seleccionados
Leer las respuestas