Dom Brooks weist in seinem Blog darauf hin, dass Oracle auch in aktuellen Releases die Kosten von scalar subqueries (also Subqueries in der SELECT-Liste, die für jeden einzelnen Ergebnissatz ausgeführt werden) nicht in in die Gesamtkosten einer Query einrechnet (was Jonathan Lewis in einem verlinkten Artikel damit begründet, dass der cbo nicht schätzen möchte, wie oft diese Unterabfrage ausgeführt wird - obwohl er ja die Menge der Ergebnissätze der Haupt-Query durchaus prognostiziert). Außer auf den Herrn Lewis wird auch noch auf Randolf Geist (der grundsätzlich darauf hinweist, dass Oracle "obviously treats work that has to be performed as part of the projection differently than work that has to be performed as part of the selection part"; der Fall ist demnach verwandt mit den problematischen Kostenschätzungen für user-defined functions, zu denen der Herr Geist in jüngerer Vergangenheit einiges geschrieben hat) und Gary Myers verwiesen, die sich auch schon gelegentlich zum Thema geäußert haben.
Ein Hinweis also, dass man scalar subqueries mit Vorsicht zu verwenden hat - aber das sollte man ohnehin, weil sie ab einer gewissen Größe der Ergebnismenge unheimlich kostspielig werden.
Bei nochmaliger Durchsicht des Absatzes wird mir klar, dass ich mir nicht nur über den Einsatz von scalar subqueries, sondern auch über den von Parenthesen Gedanken machen sollte.
Keine Kommentare:
Kommentar veröffentlichen