Ver Mensaje Individual
  #4  
Antiguo 06-11-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Reputación: 27
__cadetill Va por buen camino
He seguido tu pregunta desde que publicaste el primer mensaje y, la verdad no se que decirte

La consulta es (o almenos eso parece) correcta. Sólo se me ocurren algunas cosillas que podrías mirar

1.- Índices. Es decir, mirar que todas las tablas tengan índices y que sean los correctos para efectuar la consulta. Cuales? Pues por ejemplo, los que hacen unión de las tablas.

2.- Comprobar que se esté utilizando el Plan correcto. Cómo? Pues tendrás que utilizar el componente TIBSQLMonitor para mirar que es lo que hace la sentencia SQL al abrirla

3.- Que las tablas (o alguna de ellas) sea muy grande y, al hacer el join con las demás, esto le cueste (piensa que estás uniendo 6 tablas)

4.- Otra cosa que puedes mirar de hacer es, primero unir las tablas más pequeñas y luego, las grandes. Si no voy equibocado (si lo estoy corregirme), la consulta se va montando según las opciones en el wehere que se tengan, es decir, si primero hacer la unión entre tablaA y tablaB, el resultado de ésta servirá para hacer la unión con tablaC y así sucesivamente (repito, no estoy seguro de esto, pero en As400/DB2 funciona así)

5.- Otra posible causa que se me ocurre es que no estés utilizando todo el índice de las tablas de unión. Es decir, por ejemplo, en mi trabajo tengo una tabla que el índice es TIPO_MOV + COD_ART y tengo otra tabla que el índice es COD_ADT. Pues bien, si las quiero unir, es aconsejable utilizar todo el índice de la primera tabla (aunque tengas que poner algo constante en el primer campo del índice de la primera tabla). Sería algo así

selec *
from tabla1 a, tabla2 b
where a.TIP_MOV = 'C' and b.COD_ART = a.COD_ART

Bueno, no se si me he explicado mucho ni si te van a servir mis comentarios. Ya me contarás
Responder Con Cita