PCT COST ? Comment 7271 peut-il représenter 0% de 2 ?
Si on effectue une requête SQL et que l’on demande l’affichage de son plan d’exécutio par défaut on obtient le coût individuel de chaque action, ainsi un parcours complet de table ou d’index est associé à un coût global associé à son pourcentage de coût CPU et c’est là que ça se complique un poil. En effet, si on interroge directement les tables ou les vues du dictionnaire la relation en le contenu de la colonne CPU_COST des tables contenant les plans d’exécution rapportée à la colonne COST contenant le coût global de la l’action, on est loin de trouver un rapport quelconque avec le pourcentage affiché.
select * from sys.dual ; D - X select * from table(dbms_xplan.display_cursor()) ; PLAN_TABLE_OUTPUT -------------------------------------------------------------------------------- SQL_ID cps942q7r3w9m, child number 0 ------------------------------------- select * from sys.dual Plan hash value: 272002086 -------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | -------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | | 2 (100)| | | 1 | TABLE ACCESS FULL| DUAL | 1 | 2 | 2 (0)| 00:00:01 | -------------------------------------------------------------------------- 13 rows selected. l 1 select id 2 , lpad(' ',DEPTH)||OPERATION||' '||OPTIONS operation 3 , OBJECT_NAME NAME 4 , CARDINALITY "ROWS" 5 , BYTES 6 , COST 7 , CPU_COST 8 , IO_COST 9 from v$sql_plan 10* where plan_hash_value=272002086 / ID OPERATION NAME ROWS BYTES COST CPU_COST IO_COST ---------- -------------------- ---- ----- ------ ----- ---------- ---------- 0 SELECT STATEMENT 2 1 TABLE ACCESS FULL DUAL 1 2 2 7271 2