Collection Contents Zurück Weiter PDF

ASA SQL-Benutzerhandbuch

Abfragen optimieren und ausführen

Zugriffspläne lesen


Sie können herausfinden, welche Abfrageoptimierungsstrategie (Plan) der Optimierer für eine beliebige Anweisung ausgewählt hat.

Es ist die Aufgabe des Optimierers, die Semantik Ihrer Abfrage zu verstehen und einen Plan zu entwerfen, der die Ergebnisse berechnet. Dieser Plan muss nicht mit der von Ihnen verwendeten Syntax übereinstimmen. Dem Optimierer steht es frei, Ihre Abfrage in ein beliebiges, semantisch gleichwertiges Format umzuschreiben.

Weitere Hinweise zu den Regeln, die Adaptive Server Anywhere beim Umschreiben Ihrer Abfrage befolgt, finden Sie unter Neuschreiben von Unterabfragen als EXISTS-Prädikate und Semantische Abfragen-Transformationen.

Hinweise zu den Methoden, die der Optimierer zum Implementieren Ihrer Abfrage benutzt, finden Sie unter Algorithmen zur Abfrageausführung.

Sie können den Plan in Interactive SQL bzw. mit den SQL-Funktionen anzeigen. Der Zugriffsplan kann in verschiedenen Formaten abgerufen werden:

Sie können Pläne für SQL-Abfragen auch mit bestimmten Cursortypen erhalten.

Weitere Hinweise zum Zugriff auf den Plan finden Sie unter Auf den Plan zugreifen. Hinweise zum Lesen von Plänen finden Sie unter Textpläne und Grafische Pläne.

Nachfolgend finden Sie ein Beispiel für die Statistiken und andere Elemente, die in Zugriffsplänen angezeigt werden.

Im Plan verwendete Abkürzungen 

Es folgen die Abkürzungen, die in einem kurzen Plan verwendet werden, sowie die Kurzbezeichnungen in grafischen Plänen:

Name Kurzer Plan / Kurzbezeichnung
Hash except all EAH
Hash except EH
Hash group by GrByH
Hash Table Scan HTS
Clustered Hash (Group by) GrByHClust
Hash rollup group by GrByHR
Ordered group by GrByO
Ordered rollup group by GrByOR
Single row group by (Group by für einzelne Zeile) GrByS
Indexed group by GrByI
Hash distinct DistH
Indexed distinct DistI
Ordered distinct DistO
Sort Top N StrN
Hash filter HF
Hash intersect all IAH
Hash Intersect IH
Exists join JE
Nested loops semijoin (Nested Loops Semijoin) JNLS
Hash exists JHE
Hash not exists JHNE
Hash join JH
Sorted block (Sortierter Block) SrtBl
Left outer hash join JHO
Full outer hash join JHFO
Recursive hash join JHR
Left outer recursive hash join JHRO
Nested block join (Join mit verschachteltem Block) JNB
Left outer nested block join (Links-Outer-Join mit verschachteltem Block) JNBO
Not exists join JNE
Nested loops join (Nested Loops Join) JNL
Left outer nested loops join (Links-Outer-Nested Loops Join) JNLO
Full outer nested loops join (Vollständiger Outer-Nested Loops Join) JNLFO
Merge join JM
Left outer merge join JMO
Full outer merge join (Vollständiger Outer-Merge-Join) JMFO
Merge except EM
Merge except all EAM
Merge intersect IM
Merge intersect all IAM
Row limit (Zeilenbegrenzung) RL
Row replicate RR
Recursive table RT. Im kurzen Plan ist rt<seq>
Recursive union RU
Union all UA
Table scan Im kurzen Plan ist Tabellenname<seq>. In grafischen Plänen nur der Tabellenname.
Index scan Im kurzen Plan ist Tabellenname<Indexname>. In grafischen Plänen nur der Tabellenname.
In-Liste IN

Eine Erklärung der Algorithmen finden Sie unter Algorithmen zur Abfrageausführung.

Häufig im Plan verwendete Statistiken 

Die folgenden Statistiken sind tatsächliche, gemessene Werte.

Statistik Erklärung
Invocations Wie oft eine Zeile aus der Unterstruktur angefordert wurde
RowsReturned Anzahl der für den aktuellen Knoten zurückgegebenen Zeilen
RunTime Geschätzte Ausführungszeit für die Unterstruktur, einschließlich der Zeit für untergeordnete Strukturen
CacheHits Anzahl der erfolgreichen Lesevorgänge im Cache
CacheRead Anzahl der Datenbankseiten, die im Cache nachgeschlagen wurden
CacheReadTable Anzahl der Tabellenseiten, die vom Cache gelesen wurden.
CacheReadIndLeaf Anzahl der Index-Blattseiten, die vom Cache gelesen wurden
CacheReadIndInt Anzahl der internen Knotenseiten des Index, die vom Cache gelesen wurden
DiskRead Anzahl der Seiten, die vom Plattenspeicher gelesen wurden
DiskReadTable Anzahl der Tabellenseiten, die vom Plattenspeicher gelesen wurden
DiskReadIndLeaf Anzahl der Indexblattseiten, die vom Plattenspeicher gelesen wurden
DiskReadIndInt Anzahl der internen Knotenseiten des Index, die vom Plattenspeicher gelesen wurden
DiskWrite Anzahl der Seiten, die auf den Plattenspeicher geschrieben wurden (Arbeitstabellenseiten oder geänderte Tabellenseiten)
IndAdd Anzahl der Einträge, die zu Indizes hinzugefügt wurden
IndLookup Anzahl der Einträge, die in Indizes nachgeschlagen wurden
FullCompare Anzahl der Vergleiche, die jenseits des Hash-Werts in einem Index ausgeführt wurden
Häufig im Plan verwendete Schätzungen 
Statistik Erklärung
EstRowCount Geschätzte Anzahl der Zeilen, die vom Knoten jedesmal zurückgegeben werden, wenn er aufgerufen wird
AvgRowCount Mittlere Anzahl der Zeilen, die bei jedem Aufruf zurückgegeben werden. Diese Zahl wird nicht geschätzt, sondern berechnet als RowsReturned / Invocations. Wenn dieser Wert deutlich von EstRowCount abweicht, ist eventuell die Selektivitätsschätzung schlecht.
EstRunTime Geschätzte Ausführungszeit (Summe von EstDiskReadTime, EstDiskWriteTime und EstCpuTime)
AvgRunTime Mittlere Ausführungszeit (gemessen)
EstDiskReads Geschätzte Anzahl der Lesevorgänge von der Festplatte
AvgDiskReads Mittlere Anzahl der Lesevorgänge von der Festplatte (gemessen)
EstDiskWrites Geschätzte Anzahl der Schreibvorgänge auf die Festplatte
AvgDiskWrites Mittlere Anzahl der Schreibvorgänge auf die Festplatte (gemessen)
EstDiskReadTime Geschätzte Zeit zum Lesen von Zeilen von der Festplatte
EstDiskWriteTime Geschätzte Zeit zum Schreiben von Zeilen auf die Festplatte
EstCpuTime Geschätzte Prozessorzeit, die für die Ausführung erforderlich ist
Elemente im Plan in Bezug auf SELECT, INSERT, UPDATE und DELETE 
Element Erklärung
Optimization Goal Legt fest, ob die Abfrageverarbeitung dahingehend optimiert wird, die erste Zeile schnell zurückzugeben, oder ob der Aufwand für die Ausgabe der vollständigen Ergebnismenge minimiert werden soll

Siehe OPTIMIZATION_GOAL-Option [Datenbank].

Optimierungsarbeitslast Legt fest, ob die Abfrageverarbeitung für eine Arbeitslast optimiert wird, die aus einer Mischung von Aktualisierungen und Lesevorgängen besteht, oder für eine Arbeitslast, die hauptsächlich auf Lesevorgängen basiert.

Siehe OPTIMIZATION_WORKLOAD-Option [Datenbank].

ANSI update constraints Steuert den Bereich der Aktualisierungen, die zulässig sind (Optionen sind:OFF, CURSORS und STRICT).

Siehe ANSI_UPDATE_CONSTRAINTS-Option [Kompatibilität]

Optimization level Reserviert für spätere Verwendung
Select list Liste mit Ausdrücken, die von der Abfrage ausgewählt wurden
Elemente im Plan in Bezug auf Sperren 
Element Erklärung
Locked tables Liste aller gesperrten Tabellen und ihrer Isolationsstufen
Elemente im Plan in Bezug auf Scans 
Element Erklärung
Tabellenname Tatsächlicher Name der Tabelle
Correlation name Alias für die Tabelle
Estimated rows Geschätzte Anzahl der Zeilen in der Tabelle
Estimated pages Geschätzte Anzahl der Seiten in der Tabelle
Estimated row size Geschätzte Zeilengröße für die Tabelle
Page maps JA, wenn eine Seitenzuordnung zum Lesen mehrerer Seiten verwendet wird
Elemente im Plan in Bezug auf Index Scans 
Element Erklärung
Index name Name des Indexes
Key type Kann PRIMARY KEY, FOREIGN KEY, CONSTRAINT (unique constraint) oder UNIQUE (unique index) sein. Der Schlüsseltyp wird nicht angezeigt, wenn der Index ein nicht eindeutiger Sekundärindex ist.
Depth Höhe des Indexes

Weitere Hinweise finden Sie unter Tabellen- und Seitengrößen.

Estimated leaf pages Geschätzte Anzahl der Blattseiten
Cardinality Die Kardinalität des Indexes, wenn er sich von der geschätzten Anzahl der Zeilen unterscheidet. Dies gilt nur für Adaptive Server Anywhere-Datenbanken Version 6.0 und früher.
Selectivity Geschätzte Anzahl der Zeilen, die innerhalb der Bereichsgrenzen liegen
Direction FORWARD oder BACKWARD.
Range bounds Bereichsgrenzen werden als eine Liste dargestellt (col_name=value) oder col_name IN [low, high]
Elemente im Plan in Bezug auf Joins, Filter und Vorfilter 
Element Erklärung
Predicate Die Suchbedingung, die in diesem Knoten aufgelöst wird, sowie Selektivitätsschätzungen und -Messungen

Weitere Hinweise finden Sie unter Selektivität im Plan.

Elemente im Plan in Bezug auf Hash-Filter 
Element Erklärung
Build values Geschätzte Anzahl von unterschiedlichen Werten in der Eingabe.
Probe values Geschätzte Anzahl von unterschiedlichen Werten in der Eingabe beim Prüfen des Prädikats.
Bits Anzahl der ausgewählten Bits zum Aufbau der Hash-Map
Pages Anzahl der ausgewählten Seiten, die zum Speichern der Hash-Map erforderlich sind
Elemente im Plan in Bezug auf Vereinigung 
Element Erklärung
Union List Die Spalten, die an einem UNION-Vorgang beteiligt sind
Elemente im Plan in Bezug auf GROUP BY 
Element Erklärung
Aggregates Alle Aggregatfunktionen
Group-by list Alle Spalten in der group by-Klausel
Elemente im Plan in Bezug auf DISTINCT 
Element Erklärung
Distinct list Alle Spalten in der distinct-Klausel
Elemente im Plan in Bezug auf die IN-Liste 
Element Erklärung
In List Alle Ausdrücke im angegebenen Set
Expression SQL Ausdrücke, die mit der Liste verglichen werden müssen
Elemente im Plan in Bezug auf SORT 
Element Erklärung
Order-by Listet alle Ausdrücke, nach denen sortiert werden soll
Elemente im Plan in Bezug auf Zeilenbegrenzung 
Element Erklärung
Row limit count Maximale Anzahl von zurückgegebenen Zeilen, wie dies mit FIRST oder TOP n angegeben wurde

Textpläne
Grafische Pläne
Auf den Plan zugreifen

Collection Contents Zurück Weiter PDF