bonsoir,
je voulais optimiser une requête de jointure multiple:
en fait ma requte est la suivante:
SELECT diag_libelle,diag_id, cons_date, pat_nom,hosp_dataini FROM diagnostique,consultation,patient,hospitalisation WHERE diag_id = cons_diag_id and cons_pat_id = pat_id and pat_id = hosp_pat_id and pat_id=1;
--310786 rows selected.
--Elapsed: 00:04:19.27
j'ai lu sur un site est que l'étape la plus intensive du processus de préparation SQL est la génération du plan d'exécution, notamment dans le cas d'une requête à jointures multiples (l'évaluation de toutes les combainisons de jointure possibles dans mon cas 4*3*2=24 permutation possible).
donc j'ai pensé à travailler sur cet aspect .
donc j'ai essayé ca:
SELECT/*+ optimizer_max_permutation=1 */ diag_libelle,diag_id, cons_date, pat_nom,hosp_dataini FROM diagnostique,consultation,patient,hospitalisation-- WHERE diag_id = cons_diag_id and cons_pat_id = pat_id and pat_id = hosp_pat_id and pat_id=1;
--310786 rows selected.
--Elapsed: 00:04:25.17
le temps d'exécution de la requete augmente au lieu de diminuer j'ai même fixer le parametre optimizer_search_limit à 3 mais ce ci n'avait aucun impact.
quelqu'un puisse m'expliquer que dois -je faire pour optimiser une telle requete.
merci
Partager