Como optimizo una consulta?

31/08/2004 - 16:54 por Joel G. | Informe spam
Tengo una consulta que se ejecuta para recuperar ciertos
datos, pero en un caso el cual tiene bastante información
lo hace rápido y para otro que tiene menos información lo
hace lento, estoy hablando de una diferencia de 7
segundos, lo analice en el "show execution plan" y ocupa
diferente método de optimización.
Pero es la misma consulta, alguien sabe como puedo hacer
para dicha consulta me tome solo un metodo de optimización
o como puedo hacer que el optimizador no ejecute dicha
consulta(brincarme el optimizador).

agradezco me puedan ayudar.

Preguntas similare

Leer las respuestas

#1 Maxi
31/08/2004 - 20:26 | Informe spam
Hola, pues habria que ver como esta armada la consulta!! pero basicamente el
optimizador de consultas buscara siempre la forma mas optima de realizar la
tarea, suponete que tenes una tabla con un indice y que el optimizador dice
que no conviene el uso del indice porque seria muy costoso, luego para la
misma tabla y otra consulta puede usarlo!!

Te recomiendo que uses el asistente para indices del QA para ver si
recomienda algo.

Un abrazo


Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Joel G." escribió en el mensaje
news:12e101c48f6a$70064160$
Tengo una consulta que se ejecuta para recuperar ciertos
datos, pero en un caso el cual tiene bastante información
lo hace rápido y para otro que tiene menos información lo
hace lento, estoy hablando de una diferencia de 7
segundos, lo analice en el "show execution plan" y ocupa
diferente método de optimización.
Pero es la misma consulta, alguien sabe como puedo hacer
para dicha consulta me tome solo un metodo de optimización
o como puedo hacer que el optimizador no ejecute dicha
consulta(brincarme el optimizador).

agradezco me puedan ayudar.



Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.740 / Virus Database: 494 - Release Date: 16/08/2004
Respuesta Responder a este mensaje
#2 Anonimo
31/08/2004 - 22:36 | Informe spam
Muchas gracias por su interes, ya resolví el problema,
active la variable de entorno SET FORCEPLAN ON antes de
ejecutar la consulta y todo corrio como lo esperaba,
gracias.






Comparto las sugerencias de Maxi. Lo unico que añadiría


es que si la
consulta tiene constantes, por ejemplo ( WHERE ID = 101)


el plan de
ejecución puede resultar bastante diferente ya que en ese


caso SQL Server
enpieza a analizar la distribución estadística de los


valores de la columna
citada para estimar la cantidad de filas a retornar.

Lo que podrias hacer es lo siguiente:

Ejecuta la sentencia


SET STATISTICS PROFILE ON
antes de cada caso en el Query Analizer y envianos la


salida asi la vemos
entre todos.

Saludos
Adrian D. Garcia
MCSD
NDSoft Consultoria y Desarrollo

"Maxi" wrote in message
news:
Hola, pues habria que ver como esta armada la




consulta!! pero basicamente
el
optimizador de consultas buscara siempre la forma mas




optima de realizar
la
tarea, suponete que tenes una tabla con un indice y que




el optimizador
dice
que no conviene el uso del indice porque seria muy




costoso, luego para la
misma tabla y otra consulta puede usarlo!!

Te recomiendo que uses el asistente para indices del QA




para ver si
recomienda algo.

Un abrazo


Salu2

Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET

Nunca consideres el estudio como una obligación sino




como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Joel G."




escribió en el mensaje
news:12e101c48f6a$70064160$
Tengo una consulta que se ejecuta para recuperar ciertos
datos, pero en un caso el cual tiene bastante




información
lo hace rápido y para otro que tiene menos información




lo
hace lento, estoy hablando de una diferencia de 7
segundos, lo analice en el "show execution plan" y ocupa
diferente método de optimización.
Pero es la misma consulta, alguien sabe como puedo hacer
para dicha consulta me tome solo un metodo de




optimización
o como puedo hacer que el optimizador no ejecute dicha
consulta(brincarme el optimizador).

agradezco me puedan ayudar.



Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system




(http://www.grisoft.com).
Version: 6.0.740 / Virus Database: 494 - Release Date:




16/08/2004






.

Respuesta Responder a este mensaje
#3 Adrian D. Garcia
01/09/2004 - 00:55 | Informe spam
Comparto las sugerencias de Maxi. Lo unico que añadiría es que si la
consulta tiene constantes, por ejemplo ( WHERE ID = 101) el plan de
ejecución puede resultar bastante diferente ya que en ese caso SQL Server
enpieza a analizar la distribución estadística de los valores de la columna
citada para estimar la cantidad de filas a retornar.

Lo que podrias hacer es lo siguiente:

Ejecuta la sentencia


SET STATISTICS PROFILE ON
antes de cada caso en el Query Analizer y envianos la salida asi la vemos
entre todos.

Saludos
Adrian D. Garcia
MCSD
NDSoft Consultoria y Desarrollo

"Maxi" wrote in message
news:
Hola, pues habria que ver como esta armada la consulta!! pero basicamente


el
optimizador de consultas buscara siempre la forma mas optima de realizar


la
tarea, suponete que tenes una tabla con un indice y que el optimizador


dice
que no conviene el uso del indice porque seria muy costoso, luego para la
misma tabla y otra consulta puede usarlo!!

Te recomiendo que uses el asistente para indices del QA para ver si
recomienda algo.

Un abrazo


Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Joel G." escribió en el mensaje
news:12e101c48f6a$70064160$
Tengo una consulta que se ejecuta para recuperar ciertos
datos, pero en un caso el cual tiene bastante información
lo hace rápido y para otro que tiene menos información lo
hace lento, estoy hablando de una diferencia de 7
segundos, lo analice en el "show execution plan" y ocupa
diferente método de optimización.
Pero es la misma consulta, alguien sabe como puedo hacer
para dicha consulta me tome solo un metodo de optimización
o como puedo hacer que el optimizador no ejecute dicha
consulta(brincarme el optimizador).

agradezco me puedan ayudar.



Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.740 / Virus Database: 494 - Release Date: 16/08/2004


Respuesta Responder a este mensaje
#4 Adrian D. Garcia
01/09/2004 - 03:29 | Informe spam
Si, pero con ello no estas analizando el porque del problema.
Quizas en estas 2 consultas el problema este solucionado pero con parametros
diferentes puedes tener un rendimiento bastante malo ya que estas forzando a
que el motor arme un plan de ejecucion siguiendo el mismo orden de los
JOIN's tal cual se escribio en la sentencia.

Saludos
Adrian D. Garcia
MCSD
NDSoft Consultoria y Desarrollo

wrote in message
news:3b4101c48f9a$43898cc0$
Muchas gracias por su interes, ya resolví el problema,
active la variable de entorno SET FORCEPLAN ON antes de
ejecutar la consulta y todo corrio como lo esperaba,
gracias.






Comparto las sugerencias de Maxi. Lo unico que añadiría


es que si la
consulta tiene constantes, por ejemplo ( WHERE ID = 101)


el plan de
ejecución puede resultar bastante diferente ya que en ese


caso SQL Server
enpieza a analizar la distribución estadística de los


valores de la columna
citada para estimar la cantidad de filas a retornar.

Lo que podrias hacer es lo siguiente:

Ejecuta la sentencia


SET STATISTICS PROFILE ON
antes de cada caso en el Query Analizer y envianos la


salida asi la vemos
entre todos.

Saludos
Adrian D. Garcia
MCSD
NDSoft Consultoria y Desarrollo

"Maxi" wrote in message
news:
Hola, pues habria que ver como esta armada la




consulta!! pero basicamente
el
optimizador de consultas buscara siempre la forma mas




optima de realizar
la
tarea, suponete que tenes una tabla con un indice y que




el optimizador
dice
que no conviene el uso del indice porque seria muy




costoso, luego para la
misma tabla y otra consulta puede usarlo!!

Te recomiendo que uses el asistente para indices del QA




para ver si
recomienda algo.

Un abrazo


Salu2

Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET

Nunca consideres el estudio como una obligación sino




como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Joel G."




escribió en el mensaje
news:12e101c48f6a$70064160$
Tengo una consulta que se ejecuta para recuperar ciertos
datos, pero en un caso el cual tiene bastante




información
lo hace rápido y para otro que tiene menos información




lo
hace lento, estoy hablando de una diferencia de 7
segundos, lo analice en el "show execution plan" y ocupa
diferente método de optimización.
Pero es la misma consulta, alguien sabe como puedo hacer
para dicha consulta me tome solo un metodo de




optimización
o como puedo hacer que el optimizador no ejecute dicha
consulta(brincarme el optimizador).

agradezco me puedan ayudar.



Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system




(http://www.grisoft.com).
Version: 6.0.740 / Virus Database: 494 - Release Date:




16/08/2004






.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida