Optimización de consulta

10/10/2007 - 09:15 por Alhambra Eidos Kiquenet | Informe spam
Hola a todos,

tengo una consulta SQL, que en el servidor de base de datos de desarrollo se
ejecuta rápidamente. En cambio, en el servidor de base de datos de producción
tarda más de 45 segundos.

No puedo utilizar ninguna herramienta (como profiler, planes de ejecución,
etc).

Así a simple vista, cómo podría optimizar esta consulta ??

Muchas gracias. Saludos.

La consulta es:

SELECT first 100
t.idtareasworkflow, t.tipotarea, t.fcinicio, t.tminicio, t.idencargo,
t.idvaloracion, t.nexpedval, t.iniusuario
, t.fcinischedule, t.tminischedule, t.clavecaja, t.clavetasa, t.fcentrega,
t.tmentrega, t.offset, t.fcprioridad

, mf.fcitem AS menu_fra_fcitem, (select fcitem from menu_fra mf2 where
t.tipoval = mf2.valor AND mf2.fcclave = 'X05' AND mf2.languaje = 1) AS
menu_fra_fcitem_abreviatura

,v.nombresol as valoracion_nombresol, v.ape1sol as valoracion_ape1sol,
v.ape2sol as valoracion_ape2sol

, tv.nombre as tasadorval_nombre, tv.apellidos as tasadorval_apellidos

, dv.iddirecval AS direcval_iddirecval, dv.codpos AS direcval_codpos,
dv.codbar AS
direcval_codbar, dv.poblacion AS direcval_poblacion

, dv.tipoviapublica AS direcval_tipoviapublica, dv.viapublica AS
direcval_viapublica, dv.numero AS direcval_numero, dv.bloque AS
direcval_bloque

, dv.escalera AS direcval_escalera, dv.planta AS direcval_planta, dv.puerta
AS direcval_puerta, dv.letra AS direcval_letra, dv.poligonoind AS
direcval_poligonoind

, (select fcitem from menu_fra where fcclave = 'B26' and languaje = 1 and
valor = dv.tipoviapublica) as direcval_descripciontipoviapublica

, tt.codigo as tipotarea_codigo, tt.nombre as tipotarea_nombre

, ter.idvaloracion AS terreno_idvaloracion,parcvivunif AS
terreno_parcvivunif, essolar AS terreno_essolar

FROM tareasworkflow t

LEFT JOIN menu_fra mf ON t.tipoval = mf.valor AND mf.fcclave = 'B36' AND
mf.languaje = 1

LEFT JOIN tasadorval tv on t.clavetasa = tv.clavetasa and t.idvaloracion =
tv.idvaloracion

LEFT JOIN (valoracion v LEFT JOIN direcval dv on v.idvaloracion =
dv.idvaloracion) on t.idvaloracion = v.idvaloracion

LEFT JOIN tipotarea tt on t.tipotarea = tt.codigo

LEFT JOIN terreno ter on t.idvaloracion = ter.idvaloracion

WHERE (tmfinal IS NULL)

ORDER BY t.fcprioridad
http://www.alhambra-eidos.es/web2005/index.html
www.kiquenet.net
www.trabajobasura.com/solusoft

Preguntas similare

Leer las respuestas

#1 Maxi
10/10/2007 - 14:34 | Informe spam
Hola, a simple vista no se ve nada raro, revise los indices en sus tablas,
peros usted debe saber que para este tipo de cosas es necesario ver los
planes de ejecucion, porque hay que ver como SQL en ese servidor esta
queriendo hacer la consulta!


-
Microsoft M.V.P en SQLServer
SQLTotal Consulting - Servicios en SQLServer
Email:
"Alhambra Eidos Kiquenet"
escribió en el mensaje
news:
Hola a todos,

tengo una consulta SQL, que en el servidor de base de datos de desarrollo
se
ejecuta rápidamente. En cambio, en el servidor de base de datos de
producción
tarda más de 45 segundos.

No puedo utilizar ninguna herramienta (como profiler, planes de ejecución,
etc).

Así a simple vista, cómo podría optimizar esta consulta ??

Muchas gracias. Saludos.

La consulta es:

SELECT first 100
t.idtareasworkflow, t.tipotarea, t.fcinicio, t.tminicio, t.idencargo,
t.idvaloracion, t.nexpedval, t.iniusuario
, t.fcinischedule, t.tminischedule, t.clavecaja, t.clavetasa, t.fcentrega,
t.tmentrega, t.offset, t.fcprioridad

, mf.fcitem AS menu_fra_fcitem, (select fcitem from menu_fra mf2 where
t.tipoval = mf2.valor AND mf2.fcclave = 'X05' AND mf2.languaje = 1) AS
menu_fra_fcitem_abreviatura

,v.nombresol as valoracion_nombresol, v.ape1sol as valoracion_ape1sol,
v.ape2sol as valoracion_ape2sol

, tv.nombre as tasadorval_nombre, tv.apellidos as tasadorval_apellidos

, dv.iddirecval AS direcval_iddirecval, dv.codpos AS direcval_codpos,
dv.codbar AS
direcval_codbar, dv.poblacion AS direcval_poblacion

, dv.tipoviapublica AS direcval_tipoviapublica, dv.viapublica AS
direcval_viapublica, dv.numero AS direcval_numero, dv.bloque AS
direcval_bloque

, dv.escalera AS direcval_escalera, dv.planta AS direcval_planta,
dv.puerta
AS direcval_puerta, dv.letra AS direcval_letra, dv.poligonoind AS
direcval_poligonoind

, (select fcitem from menu_fra where fcclave = 'B26' and languaje = 1 and
valor = dv.tipoviapublica) as direcval_descripciontipoviapublica

, tt.codigo as tipotarea_codigo, tt.nombre as tipotarea_nombre

, ter.idvaloracion AS terreno_idvaloracion,parcvivunif AS
terreno_parcvivunif, essolar AS terreno_essolar

FROM tareasworkflow t

LEFT JOIN menu_fra mf ON t.tipoval = mf.valor AND mf.fcclave = 'B36' AND
mf.languaje = 1

LEFT JOIN tasadorval tv on t.clavetasa = tv.clavetasa and t.idvaloracion > tv.idvaloracion

LEFT JOIN (valoracion v LEFT JOIN direcval dv on v.idvaloracion > dv.idvaloracion) on t.idvaloracion = v.idvaloracion

LEFT JOIN tipotarea tt on t.tipotarea = tt.codigo

LEFT JOIN terreno ter on t.idvaloracion = ter.idvaloracion

WHERE (tmfinal IS NULL)

ORDER BY t.fcprioridad
http://www.alhambra-eidos.es/web2005/index.html
www.kiquenet.net
www.trabajobasura.com/solusoft

Respuesta Responder a este mensaje
#2 Salvador Ramos
10/10/2007 - 16:56 | Informe spam
Hola,

Como indica Maxi, a simple vista sin más datos no podemos dar una solución.
Lo único que añadiría es que esa select que tienes dentro de la select
inicial para obtener una de las columnas, se ejecutará por cada fila
devuelta por la otra select, lo que puede hacer que con muchas filas se
ralentice bastante.

De todas formas, optimizar una consulta sin planes de ejecución, sin el ddl
de las tablas ni datos de ejemplo ni de resultado, y sin una explicación del
resultado a obtener, es imposible.
Para que te podamos ayudar debes facilitarnos esa información.

Un saludo
Salvador Ramos

www.helpdna.net (información sobre SQL Server y Microsoft .Net)
www.helpdna.net/acerca_de_salvador_ramos.htm


"Alhambra Eidos Kiquenet"
escribió en el mensaje
news:
Hola a todos,

tengo una consulta SQL, que en el servidor de base de datos de desarrollo
se
ejecuta rápidamente. En cambio, en el servidor de base de datos de
producción
tarda más de 45 segundos.

No puedo utilizar ninguna herramienta (como profiler, planes de ejecución,
etc).

Así a simple vista, cómo podría optimizar esta consulta ??

Muchas gracias. Saludos.

La consulta es:

SELECT first 100
t.idtareasworkflow, t.tipotarea, t.fcinicio, t.tminicio, t.idencargo,
t.idvaloracion, t.nexpedval, t.iniusuario
, t.fcinischedule, t.tminischedule, t.clavecaja, t.clavetasa, t.fcentrega,
t.tmentrega, t.offset, t.fcprioridad

, mf.fcitem AS menu_fra_fcitem, (select fcitem from menu_fra mf2 where
t.tipoval = mf2.valor AND mf2.fcclave = 'X05' AND mf2.languaje = 1) AS
menu_fra_fcitem_abreviatura

,v.nombresol as valoracion_nombresol, v.ape1sol as valoracion_ape1sol,
v.ape2sol as valoracion_ape2sol

, tv.nombre as tasadorval_nombre, tv.apellidos as tasadorval_apellidos

, dv.iddirecval AS direcval_iddirecval, dv.codpos AS direcval_codpos,
dv.codbar AS
direcval_codbar, dv.poblacion AS direcval_poblacion

, dv.tipoviapublica AS direcval_tipoviapublica, dv.viapublica AS
direcval_viapublica, dv.numero AS direcval_numero, dv.bloque AS
direcval_bloque

, dv.escalera AS direcval_escalera, dv.planta AS direcval_planta,
dv.puerta
AS direcval_puerta, dv.letra AS direcval_letra, dv.poligonoind AS
direcval_poligonoind

, (select fcitem from menu_fra where fcclave = 'B26' and languaje = 1 and
valor = dv.tipoviapublica) as direcval_descripciontipoviapublica

, tt.codigo as tipotarea_codigo, tt.nombre as tipotarea_nombre

, ter.idvaloracion AS terreno_idvaloracion,parcvivunif AS
terreno_parcvivunif, essolar AS terreno_essolar

FROM tareasworkflow t

LEFT JOIN menu_fra mf ON t.tipoval = mf.valor AND mf.fcclave = 'B36' AND
mf.languaje = 1

LEFT JOIN tasadorval tv on t.clavetasa = tv.clavetasa and t.idvaloracion > tv.idvaloracion

LEFT JOIN (valoracion v LEFT JOIN direcval dv on v.idvaloracion > dv.idvaloracion) on t.idvaloracion = v.idvaloracion

LEFT JOIN tipotarea tt on t.tipotarea = tt.codigo

LEFT JOIN terreno ter on t.idvaloracion = ter.idvaloracion

WHERE (tmfinal IS NULL)

ORDER BY t.fcprioridad
http://www.alhambra-eidos.es/web2005/index.html
www.kiquenet.net
www.trabajobasura.com/solusoft

Respuesta Responder a este mensaje
#3 Enrique Catala Bañuls
11/10/2007 - 21:29 | Informe spam
No podemos decirte nada sin que nos digas el plan de ejecución.
Ejecuta tu select con esto antes:

set statistics io on
GO
set statistics profile on
GO
set statistics time on
GO
DBCC DROPCLEANBUFFERS
GO
DBCC FREEPROCCACHE
go
set showplan_all on
go
go

Mándanos lo que te vuelca por pantalla SQL Server.

Salu2!
Atentamente, Enrique Catala Bañuls


"Alhambra Eidos Kiquenet" wrote:

Hola a todos,

tengo una consulta SQL, que en el servidor de base de datos de desarrollo se
ejecuta rápidamente. En cambio, en el servidor de base de datos de producción
tarda más de 45 segundos.

No puedo utilizar ninguna herramienta (como profiler, planes de ejecución,
etc).

Así a simple vista, cómo podría optimizar esta consulta ??

Muchas gracias. Saludos.

La consulta es:

SELECT first 100
t.idtareasworkflow, t.tipotarea, t.fcinicio, t.tminicio, t.idencargo,
t.idvaloracion, t.nexpedval, t.iniusuario
, t.fcinischedule, t.tminischedule, t.clavecaja, t.clavetasa, t.fcentrega,
t.tmentrega, t.offset, t.fcprioridad

, mf.fcitem AS menu_fra_fcitem, (select fcitem from menu_fra mf2 where
t.tipoval = mf2.valor AND mf2.fcclave = 'X05' AND mf2.languaje = 1) AS
menu_fra_fcitem_abreviatura

,v.nombresol as valoracion_nombresol, v.ape1sol as valoracion_ape1sol,
v.ape2sol as valoracion_ape2sol

, tv.nombre as tasadorval_nombre, tv.apellidos as tasadorval_apellidos

, dv.iddirecval AS direcval_iddirecval, dv.codpos AS direcval_codpos,
dv.codbar AS
direcval_codbar, dv.poblacion AS direcval_poblacion

, dv.tipoviapublica AS direcval_tipoviapublica, dv.viapublica AS
direcval_viapublica, dv.numero AS direcval_numero, dv.bloque AS
direcval_bloque

, dv.escalera AS direcval_escalera, dv.planta AS direcval_planta, dv.puerta
AS direcval_puerta, dv.letra AS direcval_letra, dv.poligonoind AS
direcval_poligonoind

, (select fcitem from menu_fra where fcclave = 'B26' and languaje = 1 and
valor = dv.tipoviapublica) as direcval_descripciontipoviapublica

, tt.codigo as tipotarea_codigo, tt.nombre as tipotarea_nombre

, ter.idvaloracion AS terreno_idvaloracion,parcvivunif AS
terreno_parcvivunif, essolar AS terreno_essolar

FROM tareasworkflow t

LEFT JOIN menu_fra mf ON t.tipoval = mf.valor AND mf.fcclave = 'B36' AND
mf.languaje = 1

LEFT JOIN tasadorval tv on t.clavetasa = tv.clavetasa and t.idvaloracion =
tv.idvaloracion

LEFT JOIN (valoracion v LEFT JOIN direcval dv on v.idvaloracion =
dv.idvaloracion) on t.idvaloracion = v.idvaloracion

LEFT JOIN tipotarea tt on t.tipotarea = tt.codigo

LEFT JOIN terreno ter on t.idvaloracion = ter.idvaloracion

WHERE (tmfinal IS NULL)

ORDER BY t.fcprioridad
http://www.alhambra-eidos.es/web2005/index.html
www.kiquenet.net
www.trabajobasura.com/solusoft

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