Bonjour,
En affichant un plan d'exécution, Oracle ne renseigne la colonne TIME qu'avec une précision au niveau de la seconde.
Néanmoins, avec le hint GATHER_PLAN_STATISTICS, on descend au dixième de seconde.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 ------------------------------------------------------------------------------------------------------ | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | ------------------------------------------------------------------------------------------------------ | 0 | SELECT STATEMENT | | 1 | 65 | 5 (0)| 00:00:01 | |* 1 | TABLE ACCESS BY INDEX ROWID BATCHED| PC_RENDEMENT | 1 | 65 | 5 (0)| 00:00:01 | |* 2 | INDEX RANGE SCAN | PC_RENDEMENT_1 | 5 | | 2 (0)| 00:00:01 | ------------------------------------------------------------------------------------------------------
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 select /*+ GATHER_PLAN_STATISTICS */ debut, fin from T1 where ((l_support = '205') and ((edn <= 79) and ((dn <= 79) and (((edx > 64) or (dx > 7)) and (xa > 796))))); SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL,NULL,'ALLSTATS LAST')); PLAN_TABLE_OUTPUT ---------------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | ---------------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | | 1 |00:00:00.01 | 5 | |* 1 | TABLE ACCESS BY INDEX ROWID BATCHED| PC_RENDEMENT | 1 | 1 | 1 |00:00:00.01 | 5 | |* 2 | INDEX RANGE SCAN | PC_RENDEMENT_1 | 1 | 5 | 5 |00:00:00.01 | 3 | ----------------------------------------------------------------------------------------------------------------
Est-il possible d'aller facilement plus bas, au niveau de la milli-seconde par exemple? Par facilement j'entends sans passer par une trace 10053...
Mon objectif est de tuner la requête et comme elle est hyper simple et s'exécute très vite, il me faut la valeur la plus précise possible.
Précision : elle s'exécute très vite MAIS le client la lance 50 000 fois dans un batch et le batch prend presque 5 heures, donc on veut tuner celle-ci.
[EDIT]
Je vois que dans V$SQL on a des temps en micro-secondes
Je vais tester ça...
Merci pour vos idées.
Partager