PrinzipFür jeden SQL-Befehl erstellt der Optimierer einen Ausführungsplan vor der Ausführung. Es gibt zahlreiche Faktoren, die den Ausführungsplan beeinflussen, z.B. der Optimierer-Modus, die SQL-Gestaltung, die Analysedaten (bei kostenbasiertem Optimierer), Hints und die DB-Parameter. Es ist möglich, sich zu Testzwecken, manuell einen Ausführungsplan anzeigen zu lassen, um ggf. Schwachstellen zu finden. Manuelles Erstellen eines Ausführungsplanes
Beispielselect * delete plan_table; explain plan select lpad(' ',2*level)||OPERATION||' '||OPTIONS||' '||OBJECT_NAME QUERY_PLAN QUERY_PLAN Der Ausführungsplan zeigt, dass in einer verschachtelten Schleife zunächst die Tabelle "AUFTRAG" vollständig durchlaufen wird. Für jede gefundene Zeile, wird in "AUFTRAG_POS" gesucht, indem der Index "PK_AUFTRAG_POS" durchsucht wird. Mit den gefundenen Rowids erfolgt der Zugriff auf die Daten in "AUFTRAG_POS". Die Tabelle "AUFTRAG" wird hier auch als Driving Table bezeichnet. Auch "AUFTRAG_POS" ist in unserem Beispiel als Driving Table verwendbar. Nach Möglichkeit sollte die Driving Table nur wenige Zeilen enthalten. Der Zugriff über "TABLE ACCESS FULL" ist besonders unangenehm. Die gesamte Tabelle wir portionsweise in den Cache geladen. Dies führt zu langsamen I/O-Operationen. Häufig genügt das Anlegen eines Index um solche Befehle deutlich zu beschleunigen. Wie man solche SQL-Befehle findet siehe Ungünstige SQL-Befehle. Stichwörter Datenbank database explain plan Ausführungsplan explain plan full table scan |