Kann jemand bitte etwas über den Erklärungsplan erklären und wie bekommt man den Erklärungsplan für eine Abfrage? Auch wenn es ein SQL-Skript gibt, das als Dienstprogramm dafür verwendet werden kann, wäre das großartig.
oracle
oracle-11g-r2
user419534
quelle
quelle
Antworten:
Sie können das Paket DBMS_XPLAN verwenden :
quelle
Ersetzen Sie das ... durch Ihre SQL-Anweisung. Führen Sie nach dem Ausführen dieses Vorgangs Folgendes aus, um den Plan anzuzeigen:
Weitere Informationen finden Sie in den Abschnitten Übersicht oder Verwendung im Oracle 11g-Handbuch zur Leistungsoptimierung.
quelle
Der geschätzte SQL-Ausführungsplan
Der geschätzte Ausführungsplan wird vom Optimierer generiert, ohne die SQL-Abfrage auszuführen. Sie können den geschätzten Ausführungsplan von jedem SQL-Client mit EXPLAIN PLAN FOR generieren oder Oracle SQL Developer für diese Aufgabe verwenden.
Erklären Sie den Plan für
Wenn Sie bei Verwendung von Oracle den
EXPLAIN PLAN FOR
Befehl einer bestimmten SQL-Abfrage voranstellen , speichert die Datenbank den geschätzten Ausführungsplan im folgenden VerzeichnisPLAN_TABLE
:Um den geschätzten Ausführungsplan anzuzeigen, müssen Sie ihn verwenden
DBMS_XPLAN.DISPLAY
, wie im folgenden Beispiel dargestellt:Oracle SQL Developer
Wenn Sie SQL Developer installiert haben, können Sie den geschätzten Ausführungsplan für jede SQL-Abfrage problemlos abrufen, ohne den Befehl EXPLAIN PLAN FOR voranstellen zu müssen:
Der tatsächliche SQL-Ausführungsplan
Der eigentliche SQL-Ausführungsplan wird vom Optimierer beim Ausführen der SQL-Abfrage generiert. Im Gegensatz zum geschätzten Ausführungsplan müssen Sie die SQL-Abfrage ausführen, um den tatsächlichen Ausführungsplan zu erhalten.
Der tatsächliche Plan sollte sich nicht wesentlich vom geschätzten Plan unterscheiden, solange die Tabellenstatistiken von der zugrunde liegenden relationalen Datenbank ordnungsgemäß erfasst wurden.
GATHER_PLAN_STATISTICS Abfragehinweis
Um Oracle anzuweisen, den tatsächlichen Ausführungsplan für eine bestimmte SQL-Abfrage zu speichern, können Sie den
GATHER_PLAN_STATISTICS
Abfragehinweis verwenden:Um den tatsächlichen Ausführungsplan zu visualisieren, können Sie Folgendes verwenden
DBMS_XPLAN.DISPLAY_CURSOR
:Aktivieren Sie STATISTICS auf DB-Verbindungsebene
Wenn Sie die Ausführungspläne für alle in einer bestimmten Sitzung generierten Abfragen abrufen möchten, können Sie die
STATISTICS_LEVEL
Sitzungskonfiguration auf ALL setzen:Dies hat den gleichen Effekt wie das Festlegen des
GATHER_PLAN_STATISTICS
Abfragehinweises für jede Ausführungsabfrage. Genau wie beimGATHER_PLAN_STATISTICS
Abfragehinweis können Sie alsoDBMS_XPLAN.DISPLAY_CURSOR
den tatsächlichen Ausführungsplan anzeigen.quelle