B.Hauser
23-10-15, 12:37
SQL generiert so gut wie keine temporären Dateien (auch nicht für CTEs oder verschachtelte Sub-Selects!). Die Erstellung und Verarbeitung von temporären Dateien ist viel zu aufwändig. SQL hat ganz andere weit performantere Methoden als temporäre Dateien zu bilden.
Was wir hier tun ist reine Spekulation!
Ohne die aktuellen Daten zu kennen und ohne zu wissen welche Indices vorliegen, stochern wir nur im Trüben und raten uns einen ab.
Wie Andreas schon sagt, es muss analysiert werden. Lass die Abfrage über Visual Explain laufen und analysiere im Anschluss die einzelnen Knoten.
EVIs und Derived/Sparsed Indices machen durchaus Sinn! Aber ob und welche in der gezeigten Abfrage sinnvoll sind, lässt sich anhand der Abfrage ohne Daten nicht sagen!
Ich würde z.B. als erstes einen Index für die 1. CTE anlegen, mit dem dec(substr(inhacd, 1, 2), 2, 0) und den in den WHERE-Bedingungen angegebenen Spalten als Schlüssel. Für die folgenden CTEs sollte damit ein Index Only Access auf diese Tabelle möglich sein. ... und dann weiter sehen.
"Normale" Indices sollten nicht mehr als DDS beschriebene logische Dateien, sondern als echte Indices angelegt werden. (DDS ist "stabilized" und SQL Indices haben per Default eine größere Page Size).
Birgitta
Was wir hier tun ist reine Spekulation!
Ohne die aktuellen Daten zu kennen und ohne zu wissen welche Indices vorliegen, stochern wir nur im Trüben und raten uns einen ab.
Wie Andreas schon sagt, es muss analysiert werden. Lass die Abfrage über Visual Explain laufen und analysiere im Anschluss die einzelnen Knoten.
EVIs und Derived/Sparsed Indices machen durchaus Sinn! Aber ob und welche in der gezeigten Abfrage sinnvoll sind, lässt sich anhand der Abfrage ohne Daten nicht sagen!
Ich würde z.B. als erstes einen Index für die 1. CTE anlegen, mit dem dec(substr(inhacd, 1, 2), 2, 0) und den in den WHERE-Bedingungen angegebenen Spalten als Schlüssel. Für die folgenden CTEs sollte damit ein Index Only Access auf diese Tabelle möglich sein. ... und dann weiter sehen.
"Normale" Indices sollten nicht mehr als DDS beschriebene logische Dateien, sondern als echte Indices angelegt werden. (DDS ist "stabilized" und SQL Indices haben per Default eine größere Page Size).
Birgitta