Bonjour,
En parcourant le net j'ai lu tout et n'importe quoi sur comment on devait lire un plan d'exécution.
Voici un plan venant de ce site http://www.dba-oracle.com/t_order_se...lans_steps.htm
J'ai compris les points suivants :
1) lire des lignes les plus indentées vers les moins indentées
2) si plusieurs lignes ont le même niveau d'indentation, lire de haut en bas
Là où je coince c'est quand il y a plusieurs sous-niveaux ayant la même profondeur d'indentation : est-ce qu'on doit lire en premier TOUTES les lignes avec le niveaux d'indentation le plus profond ou bien on en lit un puis on remonte l'arbre vers le haut pour redescendre vers la deuxième feuille la plus profonde?
Dans le cas ci-dessous, j'aurais lu dans l'ordre suivant : 5, 6, 11, 12 dans un premier temps mais le site dit 5, 6, 4, 3, 2, 11, 12, 10, 13, 9, 8, 7, 1 donc je suis bien loin d'avoir tout compris.
Est-ce que vous pourriez m'expliquer comment on parcourt l'arbre d'un plan d'exécution; c'est tout sauf trivial!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Execution Plan ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2871 Card=2 Bytes=143) 1 0 UNION-ALL 2 1 SORT (GROUP BY) (Cost=2003 Card=1 Bytes=59) 3 2 FILTER 4 3 HASH JOIN (Cost=1999 Card=1 Bytes=59) 5 4 INDEX (FAST FULL SCAN) OF 'XIN8OPS_FLT_LEG' (UNIQUE) 6 4 INDEX (RANGE SCAN) OF 'XIN3BAG_TAG_FLT_LEG' (UNIQUE) 7 1 SORT (GROUP BY) (Cost=868 Card=1 Bytes=84) 8 7 FILTER 9 8 NESTED LOOPS (Cost=864 Card=1 Bytes=84) 10 9 HASH JOIN (Cost=862 Card=1 Bytes=57) 11 10 INDEX (FAST FULL SCAN) OF 'XIN1SCHED_FLT_LEG' (UNIQUE) 12 10 INDEX (FAST FULL SCAN) OF 'XIN8OPS_FLT_LEG' (UNIQUE) 13 9 INDEX (RANGE SCAN) OF 'XIN2BAG_TAG_FLT_LEG' (UNIQUE)
Partager