Lösung: Eine Funktion in der Where Bedingung

Selbstverständlich hat Martin Berger wieder einmal recht:

    1. Die Funktion ist überflüssig und sollte entfernt werden
    2. Die Funktion ist nicht als deterministisch definiert, obwohl sie maximal deterministisch ist. Als Konsequenz kann man keinen Funktion based Index anlegen, keine virtuelle Spalte und auch keine Extended Statistics erzeugen.
    3. natürlich wäre es sinnvoll den result cache zu nutzen. In der Funktionsdefinition fehlt dieses Schlüsselwort.
    4. Als letzte flächendeckende Massnahme könnte man der Funktion Statistiken zu ordnen. Dies wird hier Table Expressions, Cardinality, SYS_OP_ATG and KOKBF und hier setting cardinality for pipelined and table functions beschrieben. Leider ist dies nicht möglich, weil ein Fehler in der where Bedingung eine implizite Konversion erzwingt. Aus effective  wird to_number (effective..) . Statistiken die mit der original Funktion effective verknüpft sind, werden dadurch unwirksam

Damit hat der Entwickler mittels beindruckender Inkompetenz alle Möglichkeiten für eine elegante Lösung vernichtet und wir müssen das Statement über hints festlegen. Dies gelang über einen sql patch.

Advertisements

Kommentar verfassen

Bitte logge dich mit einer dieser Methoden ein, um deinen Kommentar zu veröffentlichen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s