FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Optimizar LEFT JOIN
Hola
Les escribo porque no encuentro de mejorar el rendimiento de la siguiente consulta SQL:
la cuestion es que sin realizar el ultimo left join el rendimiento es optimo pero con el se dispara el consumo de tiempo. He estado buscando otras opciones y todas me llevan a un tiempo similar. Gracias por atenderme Última edición por sandiamo fecha: 23-01-2008 a las 18:28:40. Razón: El texto no resalta sintaxis SQL |
#2
|
||||
|
||||
Sin conocer cual es el motor que usas, tener una idea de las estructuras de las tablas, y del por que está diseñada la consulta de esta manera, es imposible dar una respuesta atinada.
En esto de las bases de datos, pocas cosas son absolutas. ¿es realmente necesario hacer un left join?
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#3
|
|||
|
|||
Hola jachguate
El motor de base de datos es Firebird, las tablas no tienen nada en especial y si que necesito utilizar el left join ya que necesito que aparezcan todos los registros de la tabla auxh aunque no esten relacionados con las otras tablas. En realidad el problema creo que viene de ahí porque si cambio el ultimo left join por un inner join la consulta se realiza muy rapida, aunque no me da loq ue necesito |
#4
|
||||
|
||||
¿que es lo que necesitas?
Pregunto, porque simplemente para que aparezcan todos los registros de la tabla auxh, no me parece necesario el último left join... Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#5
|
|||
|
|||
Tambien pensaba eso mismo yo pero cambiandolo por un inner join hay registros que no aparecen
|
#6
|
||||
|
||||
bien. Veo que no queres dar mas información. Lamentablemente, no traje mi varita mágica. Quizás alguien mas..
Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#7
|
|||
|
|||
A que te refieres con mas información?? Lo unico que preguntaba es si sabiais alguna manera de optimizar la consulta, pero bueno gracias por tu tiempo.
|
#8
|
|||
|
|||
Cita:
Ten en cuenta que no conocemos la estructura de tus tablas y así es como dar "palos de ciego". Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney |
#9
|
||||
|
||||
Bueno, ponete en mis zapatos... ¡no tengo idea de lo que querés hacer!. Vos la tenes muy clara... por eso obvias muchos detalles. Por eso te referí al hilo de la calidad de las preguntas, que no creo que hayas leido todavía.
¿que datos están almacenados en la tabla auxh? ¿que datos están almacenados en la tabla tiendasip? Si no tenemos su estructura, al menos entender que es cada una. Luego, ¿que índices tienen las tablas? Finalmente, ¿que información esperas obtener de vuelta? Esto porque quizás no haya forma de optimizar esta consulta que vos estas planteando... pero quizás se pueda plantear una consulta diferente, que devuelva la información que precisás, pero que sea mas óptima. No se... la tarea de darse a entender no es mia... es tuya, así que si yo fuera vos, pensaría que mejor dar información de sobra y no de falta. Es probable que en la mitad del tiempo (o menos) que he invertido para explicarte estas cosas, hubiese planteado una solución a tu problema. En cambio, voy a comer, luego a una junta... y quizás no tenga el ánimo de volver a ver el hilo, o simplemente podría morir hoy por la tarde ¿por que correrte ese riesgo si ya hubo alguien dispuesto a ayudarte?
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#10
|
|||
|
|||
Ok oido cocina he leido el Tema calidad en las preguntas y estoy de acuerdo.
Siento haber sido poco claro en la pregunta. La tabla tiendasip no es importante a mi entender en esta consulta pues solo se utiliza para recopilar un par de campos, y aun eliminandola de la consulta el retardo se mantiene. El problema a mi entender viene porque las tablas auxh y stockarticulos no estan relacionadas directamente y se requiere de la tabla articulos como tabla intermedia. Además, es necesario que aparezcan todos los registros de la tabla auxh, aunque no aparezcan en la tabla stockarticulos (de ahí los dos left join utilizados). No utilizo indices en las tablas por cierto. Vamos que esta consulta seria equivalente:
Las Tablas son: auxh CODIGO INTEGER, CODORDEN INTEGER, CODOR VARCHAR(50), DESCRIPCION VARCHAR(100), CODH VARCHAR(25) articulos CODIGO INTEGER, CODOPERADOR VARCHAR(50) stockarticulos CODIGO INTEGER, CODARTICULO INTEGER, CODTIENDA INTEGER, STOCK DOUBLE PRECISION |
#11
|
||||
|
||||
Cita:
Una vez hecho esto si la cosa sigue lenta tendremos que esperar que jachguate no se haya muerto el otro día por la tarde para que nos ilumine con su sabiduria . Un saúdo.
__________________
Si no lees esto no vivirás tranquilo Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao) |
#12
|
||||
|
||||
Cita:
Cita:
Con respecto del tema del hilo, si solo se pretende que aparezcan *todos* los registros de la tabla auxh, no entiendo por qué se hacen dos left join y no solo uno. Tampoco veo por que razón se coloca la condición (s.codtienda=:xcodtienda) como parte del join, pues a mi entender esta debiera ir en el where. Aún cuando el resultado pueda ser el mismo, la semántica es distinta. Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#13
|
||||
|
||||
Cita:
Sandiano, yo te recomendaría que mirases algo de procesamiento y optimización de consultas, para poder optimizar el diseño, y por tanto el rendimiento, de la base de datos, así como calcular el coste de dichas consultas. Cita:
Un saúdo
__________________
Si no lees esto no vivirás tranquilo Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao) |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Left Join | peripla | SQL | 1 | 28-06-2007 18:52:46 |
usando LEFT JOIN o RIGHT JOIN | alcides | SQL | 8 | 03-05-2007 17:35:46 |
left join e inner join duda | Patricio | SQL | 0 | 26-04-2007 22:06:43 |
LEFT OUTER JOIN e INNER JOIN Juntos | alcides | SQL | 3 | 08-07-2005 18:06:27 |
LEFT JOIN extraños? | Gydba | Oracle | 5 | 07-05-2004 22:11:32 |
|