Sonntag, März 11, 2012

Selectivity Bestimmung über Index Statistiken

Randolf Geist hatte hier in einem Kommentar gelegentlich schon mal darauf hingewiesen, dass der cbo Index-Statistiken verwenden kann, um die Korrelation der Spalten eines Index zu berücksichtigen und eine sinnvolle Cardinality-Schätzung zu liefern, die im Fall stärkerer Korrelation natürlich deutlich höher liegt als durch die Kombination der Einzelselektivitäten zu erwarten wäre. Jonathan Lewis liefert jetzt in seinem Blog eine detaillierte Untersuchung zum Thema und weist darin noch auf weitere wichtige Punkte hin:
  • "The optimizer has used an “index sanity” check when calculating join cardinalities since (at least) Oracle 8i – but the check has been restricted to unique indexes. From 11g it is effectively in use for any index."
  • "The code has been back-ported to 10.2.0.4 (and 10.2.0.5) but requires you to set a value for the hidden _fix_control parameter"
  • "this makes it harder to work out if it’s safe to drop an index. Even when an index doesn’t appear in an execution plan Oracle may be using its number of distinct keys to evaluate and choose an execution plan. So, to guard against changes in plans when you drop a multi-column index, you might want to think about creating extended stats on a set of columns that matches the index definition before dropping the index."

Keine Kommentare:

Kommentar veröffentlichen