Jonathan Lewis weist in seinem Blog darauf hin, dass die cardinality für Prädikate der Form: NVL(spalte, konstanter_datumswert) bis Version 11.1.0.7 mit dem Standardwert "5% for range-based predicate on function(col)" berechnet wurde, aber in 11.2.0.4 eine plausiblere Behandlung erfährt, die das Prädikat in den NULL-Fall und den Fall des Vergleichs der vorhandenen Werte aufspaltet, und dadurch deutlich zutreffendere Schätzungen liefert (was für ähnlich gelagerte Fälle auch schon in früheren Releases möglich war). Zwischen 11.2.0.1 und 11.2.0.3 scheint die Überarbeitung des Verhaltens allerdings erst einmal in die falsche Richtung geführt zu haben (wie die Kommentare zum Artikel zeigen). Erinnerungswürdig ist aber in jedem Fall dass dies wieder eine jener Optimierungen ist, die beim Upgrade eines Systems zur recht massiven Planänderungen führen können.
Vielen Dank für diese Infos - genau danach habe ich gesucht. Ist übrigens nicht das erste Mal, das ich mir auf deinem Blog Hilfe geholt habe ;-).
AntwortenLöschenHerzlichen Dank. Ich freue mich immer wieder, wenn ich erfahre, dass ich Leser habe. Die Statistiken behaupten das zwar auch, aber bekanntlich gilt: there are three kinds of lies: lies, damned lies, and statistics...
AntwortenLöschen