Database Reference
In-Depth Information
L: „
Peter, weißt Du, wie Oracle die Kardinalität von 2667 in diesem Ausführungsplan be-
rechnet?
“
P: „
Der Optimizer berechnet diese Kardinalität wahrscheinlich pauschal, weil die Histo-
gramme nicht existieren. Wie es aber genau gemacht wird, weiß ich nicht.
“
L.: „
Das macht der Optimizer anhand der Statistiken für die Spalte
‚
A
'. “
64/!VHOHFWQXPBGLVWLQFWQXPBQXOOVIURPGEDBWDEBFROBVWDWLVWLFVZKHUHRZQHU 7(67DQG
WDEOHBQDPH 7DQGFROXPQBQDPH $
180B',67,1&7180B18//6
„
Die Tabelle T1 hat 10001 Datensätze. Oracle subtrahiert aus dieser Zahl die Anzahl der
Null-Werte, die für unsere Abfrage nicht relevant sind. So kommt man auf die Zahl 8001. Da
die Spalte
‚
A
'
3 verschiedene Werte hat, muss man jetzt 8001 durch 3 teilen. Das Ergebnis ist
2667
.“
P.: „
Der Optimizer geht in diesem Fall also davon aus, dass die Werte in der Spalte
‚
A
'
gleichmäßig verteilt sind?
“
L.: „
Richtig. Wenn wir jetzt testweise diese Statistiken entfernen, muss der Optimizer eine
Annahme bei der Einschätzung der Kardinalität tun.
“
64/!H[HF
GEPVBVWDWVGHOHWHBFROXPQBVWDWV7(677$FROBVWDWBW\SH !$//QRBLQYDOLGDWH !IDOVH
3/64/SURFHGXUHVXFFHVVIXOO\FRPSOHWHG
64/!VHOHFWIURPGEDBKLVWRJUDPVZKHUHRZQHU 7(67DQGWDEOHBQDPH 7DQGFROXPQBQDPH $
QRURZVVHOHFWHG
64/!VHOHFWFRXQWEIURPWHVWWZKHUHD E
&2817%
64/!VHOHFWSODQBWDEOHBRXWSXWIURPWDEOHV\VGEPVB[SODQGLVSOD\BFXUVRU$'9$1&('
/$67
3/$1B7$%/(B287387
64/B,'SQ[YMEUFKLOGQXPEHU
VHOHFWFRXQWEIURPWHVWWZKHUHD E
3ODQKDVKYDOXH
_,G_2SHUDWLRQ_1DPH_5RZV_%\WHV_&RVW&38_7LPH_
__6(/(&767$7(0(17______
__6257$**5(*$7(______
__7$%/($&&(66%<,1'(;52:,'_7_____
__,1'(;5$1*(6&$1_,B7_____