Hola kourgan,
¡¡¡¡bienvenido al foro!!!
Una primera sugerencia es que uses las etiquetas (en este caso las SQL) para que el código se vea más ordenado y sea más fácil de leer y entender. Sobre el uso de etiquetas te puedes informar
aquí.
Otra cosa, te recomiendo que en vez de hacer todo esto:
Código:
from H, S, P, A, X where
P.codarea=A.codarea and
P.codsector=A.codsector and A.codsector=X.codsector and P.codproyecto=S.codproyecto and P.codproyecto=H.codproyecto and H.codproyecto=S.codproyecto AND
H.codsubpro=S.codsubpro AND
utilices
JOIN. En el foro encontrarás mucha información sobre su uso.
Y lo último, ¿realmente necesitas obtener todos los campos (*)? Honestamente, no sé cuánto pueda tener que ver en la demora el
DISTINCT *, pero me da por pensar que tienen mucho que ver también.
PS Sobre las etiquetas SQL, no las encontré yo tampoco, así que imagino que estarán temporalmente fuera de servicio.