Problemas con select

kusturica
03 de Octubre del 2002
Hola a todos,necesito optimizar la siguiente consulta:

SELECT pre.id_preaviso, pre.num_preaviso, TO_CHAR(pre.f_inip,'dd/mm/yyyy') f_inip,
TO_CHAR(pre.f_presentacion,'dd/mm/yyyy') f_presentacion, c.nss, pre.nom_centro,
pre.id_via, pre.via_nombre, pre.via_num, pre.via_num_bis, pre.via_escalera,
pre.via_planta, pre.via_puerta, pre.localidad, pre.rama,pre.autonomia,
pre.provincia,pre.municipio,pre.comarca,pre.delegacion,pre.sector,pre.subsector,
ap.id_acta FROM preavisos pre,centros c, actas_preavisos ap
WHERE (ap.id_preaviso(+) = pre.id_preaviso) AND (pre.id_centro = c.id_centro)
AND pre.num_preaviso IS NULL
AND ROWNUM <= 1001

porque el left join
(ap.id_preaviso(+) = pre.id_preaviso)
m ralentiza mucho pero es necesario.Qué se os ocurre? gracias por vuestra colaboración

LeRuse
03 de Octubre del 2002
Kusturica: No se si el motor SQL que usas acepta la posibilidad de mover las condiciones al FROM. En el SQL Server agiliza mucho las respuestas. En tu caso seria:
"... From preavisos pre Right Outer Join actas_preavisos ap on ap.id_preaviso = pre.id_preaviso
Inner Join centros c on pre.id_centro = .id_centro
Where pre.num_preaviso IS NULL ..."

Aparte de eso -obviamente- crear los indices en cada tabla sobre las columnas del join.

Espero que sirva