Diferentes Planes de Ejecución

14/08/2007 - 09:43 por Julián | Informe spam
Hola grupo:

¿ Alguien sabe por qué es posible que el plan de ejecución utilizado por SQL
Server sea diferente si una consulta se lanza desde una aplicación cliente
con ODBC o desde el propio Analizador de Consultas ?
Con el Profiler observo que la consulta que le llega a Sql en ambos casos es
idéntica, pero el plan de ejecución empleado es completamente diferente.
Ésto me está provocando que desde la aplicación cliente tarde la query más
de 1 minuto, y desde el analizador de consulta no llegue a 5 segundos.
La consulta es bastante compleja y utiliza bastantes subconsultas para
obtener valores de selección..

Simplificando muchísimo, pero para que sirva de ejemplo, sería algo así:
select articulo,descripcion,
isnull(select sum(stock-ventas) from Stocks where articulo
= Articulos.articulo,0) as disponible
from Articulos
where Articulos between 'A01' and 'Z99'


Saludos.
 

Leer las respuestas

#1 Carlos Sacristan
14/08/2007 - 10:38 | Informe spam
¿Y cuáles son las diferencias en esos planes de ejecución?

"Julián" escribió en el mensaje
news:O$y$

Hola grupo:

¿ Alguien sabe por qué es posible que el plan de ejecución utilizado por
SQL Server sea diferente si una consulta se lanza desde una aplicación
cliente con ODBC o desde el propio Analizador de Consultas ?
Con el Profiler observo que la consulta que le llega a Sql en ambos casos
es idéntica, pero el plan de ejecución empleado es completamente
diferente.
Ésto me está provocando que desde la aplicación cliente tarde la query más
de 1 minuto, y desde el analizador de consulta no llegue a 5 segundos.
La consulta es bastante compleja y utiliza bastantes subconsultas para
obtener valores de selección..

Simplificando muchísimo, pero para que sirva de ejemplo, sería algo así:
select articulo,descripcion,
isnull(select sum(stock-ventas) from Stocks where articulo
= Articulos.articulo,0) as disponible
from Articulos
where Articulos between 'A01' and 'Z99'


Saludos.

Preguntas similares