Oracle : Plan d execution étendu (gather_plan_statistics hint)
Romain Ferraton · · mis à jour le 11 mars 2013
Il est possible de demander à Oracle de collecter des statistiques étendues au niveau du plan d’éxécution. Il est ensuite possible de voir quelles opérations sont les plus couteuses et celles qui sont loin des estimations de l’optimiseur (ecarts entre la colonne E-ROWS et A-ROWS) :

Pour pouvoir obtenir un tel plan, il faut spécifier un hint gather_plan_statitics et appeler ensuite le package dbms_xplan et le procedure display_cursor en utilisant l’option de détail ‘ALLSTATS LAST’ :
- ALLSTATS : pour avoir un détail complet des statistiques étendues
- LAST : pour n’avoir que les données de la dernière éxécution et non des statistiques cumulées.
obtenir un plan d’éxécution étendu grace au hint gather_plan_statistics
SQL>SELECT /*+gather_plan_statistics*/ COUNT(*) FROM
soh_dev.sx3_gaccentry p, soh_dev.sx3_gaccentryd d,
soh_dev.sx3_gaccentrya a WHERE p.NUM_0 = a.NUM_0 AND d.NUM_0 = a.NUM_0
AND p.NUM_0= d.NUM_0;
SQL> SELECT * FROM TABLE(dbms_xplan.display_cursor(NULL,NULL,'ALLSTATS LAST'));
-- ou encore plus détaillé :
SQL> SELECT * FROM TABLE(dbms_xplan.display_cursor(NULL,NULL,'ADVANCED LAST +IOSTATS +MEMSTATS'));