Freitag, April 24, 2015

Function Based Indexes und CURSOR_SHARING

Randolf Geist erläutert in seinem Blog einige interessante Details zum Zusammenspiel der Cursor-Sharing-Optionen Force und Similar (deprecated) - bei denen die verwendeten Literale durch Bindewerte ersetzt werden - mit funktionsbasierten Indizes (= Function Based Indexes; aka FBI). Grundsätzlich gilt dabei, dass FBIs durch die genannten Cursor-Sharing-Varianten unwirksam werden. Aber zumindest für den Bereich der Releases 10.2.0.4 bis 11.2.0.3 gibt es bestimmte Sonderfälle mit ergänzender Built-in-Logik, die die FBI-Verwendung der grundsätzlichen Einschränkung zum Trotz erlauben. Dabei ergibt sich eine Abweichung zwischen dem durch dbms_xplan.display_cursor angezeigten Query-Text, der die Bindewerte anzeigt, und der Prädikat-Sektion, in der teilweise noch die Literalwerte auftreten: in diesen Fällen ist die FBI-Nutzung möglich. Allerdings ergibt sich dieses Verhalten nur, wenn ein passender FBI existiert: fehlt er, so zeigt sich keine Abweichung zwischen Query-Text und Prädikat-Sektion. Darüber hinaus beschränkt sich die Optimierung auf bestimmte Expressions - in den meisten Fällen ergibt sich das Standardverhalten, das Jonathan Lewis in einem älteren Artikel erläutert, auf den mehrfach verwiesen wird, und der FBI wird nicht verwendet. Weiterhin ist die Optimierung (wenn es denn überhaupt eine gewesen ist) ab 11.2.0.4 nicht mehr wirksam.

Keine Kommentare:

Kommentar veröffentlichen