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'));