consulta rendimiento

09/09/2003 - 22:08 por Cam Acosta | Informe spam
Hola a todos,

Mi inquietud es sobre el rendimiento de una consulta la cual es:

SELECT MvICod, MvFecha, SUM(MvICant) AS Expr1
FROM MovimientosInv INNER JOIN
PedidosDia ON MovimientosInv.MvICod = PedidosDia.PLU
WHERE (MvITipoDoc = 'FV') AND (MvISucursal = 2) AND (MvFecha between
'20030902' and '20030908') AND (MvITipo = 'VT')
GROUP BY MvICod, MvFecha

declare @fecha1 datetime, @fecha2 datetime, @sucursal int
SET @FECHA1='20030902'
SET @FECHA2='20030908'
set @sucursal=2

SELECT MvICod, MvFecha, SUM(MvICant) AS Expr1
FROM MovimientosInv INNER JOIN
PedidosDia ON MovimientosInv.MvICod = PedidosDia.PLU
WHERE (MvITipoDoc = 'FV') AND (MvISucursal = @sucursal) AND (MvFecha
between @fecha1 and @fecha2 ) AND (MvITipo = 'VT')
GROUP BY MvICod, MvFecha

Si se fijan las dos select son iguales, la diferencia es que en el primero
no manejo variables, mientras en el segundo (declaro las variables arriba y
les asigno el mismo valor de la primera consulta).

Porque puede ocurrir que la primera consulta la realice inmediatamente y el
costo de la consulta es de 0%, mientras el segundo se demora unos 8 segundos
y el costo de esta sea del 100 %.

Muchas gracias,

Camilo Acosta
 

Leer las respuestas

#1 Gustavo Larriera [MVP]
09/09/2003 - 23:04 | Informe spam
Seguramente cada consulta ha generado un plan de ejecución diferente.

Puedes enviarnos los CREATE TABLE y CREATE INDEX de todas las tablas e
índices usadas en las consultas? Asi es más facil ayudarte, si podemos hacer
las pruebas...

saludos
gux

Gustavo Larriera, MSFT MVP-SQL
Uruguay LatAm

This message is provided "AS IS" with no warranties expressed or implied,
and confers no rights.


"Cam Acosta" wrote in message
news:
Hola a todos,

Mi inquietud es sobre el rendimiento de una consulta la cual es:

SELECT MvICod, MvFecha, SUM(MvICant) AS Expr1
FROM MovimientosInv INNER JOIN
PedidosDia ON MovimientosInv.MvICod PedidosDia.PLU
WHERE (MvITipoDoc = 'FV') AND (MvISucursal = 2) AND (MvFecha between
'20030902' and '20030908') AND (MvITipo = 'VT')
GROUP BY MvICod, MvFecha

declare @fecha1 datetime, @fecha2 datetime, @sucursal int
SET @FECHA1='20030902'
SET @FECHA2='20030908'
set @sucursal=2

SELECT MvICod, MvFecha, SUM(MvICant) AS Expr1
FROM MovimientosInv INNER JOIN
PedidosDia ON MovimientosInv.MvICod PedidosDia.PLU
WHERE (MvITipoDoc = 'FV') AND (MvISucursal = @sucursal) AND (MvFecha
between @fecha1 and @fecha2 ) AND (MvITipo = 'VT')
GROUP BY MvICod, MvFecha

Si se fijan las dos select son iguales, la diferencia es que en el primero
no manejo variables, mientras en el segundo (declaro las variables arriba


y
les asigno el mismo valor de la primera consulta).

Porque puede ocurrir que la primera consulta la realice inmediatamente y


el
costo de la consulta es de 0%, mientras el segundo se demora unos 8


segundos
y el costo de esta sea del 100 %.

Muchas gracias,

Camilo Acosta


Preguntas similares