Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Abfragen und Datenänderung » Abfragen » Fortgeschrittene Aufgaben: Abfrageausführungspläne

 

Komponenten von Ausführungsplänen

Folgende Abkürzungen werden in Ausführungsplänen verwendet:

Weitere Hinweise zu den Algorithmen im Plan finden Sie im Whitepaper Query Processing Based on SQL Anywhere 12.0.1 Architecture unter [external link] http://www.sybase.com/detail?id=1096047.

Kurzer Textplan Ausführlicher Textplan Zusätzliche Informationen
Beste Pläne mit Kosten Der Optimierer erstellt für eine gegebene Abfrage Zugriffspläne und berechnet die Kosten. Während dieses Vorgangs wird der aktuelle beste Plan möglicherweise durch einen neuen besten Plan ersetzt, bei dem die Kostenschätzung geringer ausfällt. Dieser letzte Plan ist der Ausführungsplan, der zum Ausführen der Anweisung verwendet wird. Kostenberechnete beste Pläne geben die Häufigkeit an, mit der der Optimierer einen besseren Plan als den aktuellen besten Plan gefunden hat. Eine niedrige Zahl gibt an, dass der beste Plan frühzeitig im Enumerationsvorgang festgelegt wurde. Da der Optimierer bei einer gegebenen Anweisung den Enumerationsvorgang zumindest einmal pro Abfrageblock startet, stellen kostenberechnete beste Pläne die kumulative Zählung dar.
Pläne mit Kosten Viele vom Optimierer generierte Pläne erweisen sich als zu kostenträchtig, verglichen mit dem bisherigen besten Plan. Pläne mit Kosten geben die Anzahl der partiellen oder vollständigen Pläne an, die der Optimierer bei einer gegebenen Anweisung während des Enumerationsvorgangs in Betracht gezogen hat.
** ** Ein vollständiger Index-Scan. Der Index-Scan liest alle Zeilen.
DELETE Delete Der Stammknoten eines DELETE-Vorgangs.
DistH HashDistinct HashDistinct nimmt eine einzelne Eingabe und gibt alle unterschiedlichen Zeilen zurück.
DistO OrderedDistinct OrderedDistinct liest jede Zeile und vergleicht sie mit der vorherigen Zeile. Wenn sie gleich ist, wird sie ignoriert, andernfalls wird sie ausgegeben.
DP DecodePostings DecodePostings dekodiert Positionsdaten für die Begriffe im Textindex.
DT DerivedTable DerivedTable erscheint möglicherweise in einem Plan, entweder aufgrund von Neuschreibungsoptimierungen einer Abfrage oder aus verschiedenen anderen Gründen, besonders wenn die Abfrage einen oder mehrere Outer-Joins umfasst.
EAH HashExceptAll

Gibt an, dass eine Hash-basierte Implementierung des SQL-Mengendifferenzenoperators EXCEPT verwendet wurde.

EAM MergeExceptAll

Gibt an, dass eine sortierungsbasierte Implementierung des SQL-Mengendifferenzenoperators EXCEPT verwendet wurde.

EH HashExcept

Gibt an, dass eine Hash-basierte Implementierung des SQL-Mengendifferenzenoperators EXCEPT verwendet wurde.

EM MergeExcept

Gibt an, dass eine sortierungsbasierte Implementierung des SQL-Mengendifferenzenoperators EXCEPT verwendet wurde.

Exchange Exchange

Gibt an, dass beim Verarbeiten einer SELECT-Anweisung abfrageinterne Parallelität verwendet wurde.

Filter Filter

Gibt an, dass Suchbedingungen angewendet werden. Dazu gehören alle Arten von Prädikaten, Vergleiche unter Verwendung von Unterabfrage-Bedingungen sowie EXISTS- und NOT EXISTS-Unterabfragen (und andere Formen quantifizierter Unterabfragen).

GrByH HashGroupBy

HashGroupBy baut eine speicherresidente Hash-Tabelle auf, die eine Zeile pro Gruppe enthält. Beim Lesen der Eingabezeilen werden die zugeordneten Gruppen in der Arbeitstabelle gesucht. Die Aggregatfunktionen werden aktualisiert, und die Gruppenzeile wird erneut in die Arbeitstabelle geschrieben. Wenn kein Gruppendatensatz vorhanden ist, wird ein neuer Gruppendatensatz initialisiert und in die Arbeitstabelle eingefügt.

GrByHClust HashGroupByClustered

In manchen Fällen sind die Werte in den Gruppenspalten der Eingabetabelle gebündelt (clustered), d.h. ähnliche Werte treten nahe beieinander auf. ClusteredHashGroupBy nutzt diese Clusterbildung.

GrByHP ParallelHashGroupBy

Eine Variante von HashGroupBy.

GrByHSets HashGroupBySets

Als eine Variante von HashGroupBy wird HashGroupBySets verwendet, wenn GROUPING SETS-Abfragen durchgeführt werden sollen.

GrByO OrderedGroupBy

OrderedGroupBy liest eine Eingabe, die nach Gruppierungsspalten sortiert ist. Jede einzelne Zeile wird gelesen und mit der vorhergehenden Zeile verglichen. Wenn die gruppierten Spalten übereinstimmen, wird die gegenwärtige Gruppe aktualisiert; anderenfalls wird die gegenwärtige Gruppe ausgegeben, und es wird mit einer neuen Gruppe begonnen.

GrByOSets OrderedGroupBySets

Als eine Variante von OrderedGroupBy wird OrderedGroupBySets verwendet, wenn GROUPING SETS-Abfragen durchgeführt werden sollen.

GrByS SingleRowGroupBy

Wenn kein GROUP BY angegeben ist, wird SingleRowGroupBy verwendet, um ein einzelnes Zeilenaggregat zu erzeugen. Eine einzelne Gruppenzeile verbleibt im Speicher und wird bei jeder Eingabezeile aktualisiert.

GrBySSets SortedGroupBySets

SortedGroupBySets wird bei der Verarbeitung von OLAP-Abfragen verwendet, die GROUPING SETS enthalten.

HF HashFilter

Gibt an, dass ein Hash-Filter (oder Bloom-Filter) verwendet wurde.

HFP ParallelHashFilter

Gibt an, dass ein Hash-Filter (oder Bloom-Filter) verwendet wurde.

HTS HashTableScan

Gibt an, dass ein Hash-Table-Scan verwendet wurde.

IAH HashIntersectAll

Gibt an, dass eine Hash-basierte Implementierung des SQL-Mengendifferenzenoperators INTERSECT verwendet wurde.

IAM MergeIntersectAll

Gibt an, dass eine sortierungsbasierte Implementierung des SQL-Mengendifferenzenoperators INTERSECT verwendet wurde.

IH HashIntersect

Gibt an, dass eine Hash-basierte Implementierung des SQL-Mengendifferenzenoperators INTERSECT verwendet wurde.

IM MergeIntersect

Gibt an, dass eine sortierungsbasierte Implementierung des SQL-Mengendifferenzenoperators INTERSECT verwendet wurde.

IN InList

InList wird in Fällen verwendet, bei denen ein IN-Listenprädikat unter Verwendung eines Indexes erfüllt werden kann.

table-name<index-name>

IndexScan, ParallelIndexScan In einem grafischen Plan wird ein Index-Scan als Indexname in einem Trapez dargestellt.
INSENSITIVE Insensitive
INSERT Insert Stammknoten eines INSERT-Vorgangs.
IO IndexOnlyScan, ParallelIndexOnlyScan

Gibt an, dass der Optimierer einen Index verwendet hat, der alle zum Erfüllen der Abfrage erforderlichen Daten enthielt.

JH HashJoin

Der HashJoin-Algorithmus erstellt eine speicherresidente Hash-Tabelle der kleineren der beiden Eingaben. Dann liest er die größere Eingabe und untersucht die Hash-Tabelle im Speicher auf Übereinstimmungen, die dann in eine Arbeitstabelle geschrieben werden. Wenn die kleinere Eingabe nicht in den Speicher passt, teilt HashJoin beide Eingaben in kleinere Arbeitstabellen auf. Diese kleineren Arbeitstabellen werden rekursiv abgearbeitet, bis die kleinere Eingabe in den Speicher passt.

JHS HashSemijoin

HashSemijoin führt einen Semijoin zwischen der linken und der rechten Seite durch.

JHSP ParallelHashSemijoin

Eine Variante von HashJoin.

JHFO Full Outer HashJoin

Eine Variante von HashJoin.

JHA HashAntisemijoin

HashAntisemijoin führt einen Anti-Semijoin zwischen der linken und der rechten Seite durch.

JHAP ParallelHashAntisemijoin

Eine Variante von HashJoin.

JHO Left Outer HashJoin

Eine Variante von HashJoin.

JHP ParallelHashJoin

Eine Variante von HashJoin.

JHPO ParallelLeftOuterHashJoin

Eine Variante von HashJoin.

JHR RecursiveHashJoin

Eine Variante von HashJoin.

JHRO RecursiveLeftOuterHashJoin

Eine Variante von HashJoin.

JM MergeJoin

MergeJoin liest zwei Eingaben, die beide nach den Join-Attributen sortiert sind. Für jede Zeile in der linken Eingabe liest der Algorithmus alle übereinstimmenden Zeilen der rechten Eingabe, indem er auf die Zeilen in sortierter Reihenfolge zugreift.

JMFO Full Outer MergeJoin

Eine Variante von MergeJoin.

JMO Left Outer MergeJoin

Eine Variante von MergeJoin.

JNL NestedLoopsJoin

NestedLoopsJoin berechnet den Join zwischen seiner rechten und linken Seite, indem er die rechte Seite für jede Zeile der linken Seite vollständig liest.

JNLA NestedLoopsAntisemijoin

NestedLoopsAntisemijoin verknüpft seine Eingaben, indem er die rechte Seite nach jeder Zeile der linken Seite durchsucht.

JNLFO Full Outer NestedLoopsJoin

Eine Variante von NestedLoopsJoin.

JNLO Left Outer NestedLoopsJoin

Eine Variante von NestedLoopsJoin.

JNLS NestedLoopsSemijoin

NestedLoopsSemijoin verknüpft seine Eingaben, indem er die rechte Seite nach jeder Zeile der linken Seite durchsucht.

KEYSET Keyset

Gibt einen Keyset-gesteuerten Cursor an.

LOAD Load

Stammknoten eines LOAD-Vorgangs.

MultiIdx MultipleIndexScan

Die MultipleIndexScan-Methode wird verwendet, wenn ein Index verwendet werden kann oder muss, um eine Abfrage zu erfüllen, die einen Satz von Suchbedingungen enthält, die mit den logischen Operatoren AND oder OR verbunden sind.

OpenString OpenString

OpenString wird in Fällen verwendet, bei denen die FROM-Klausel einer SELECT-Anweisung eine OPENSTRING-Klausel enthält.

Optimierungszeit Die Gesamtzeit, die der Optimierer bei einer gegebenen Anweisung während aller Enumerationsvorgänge verbraucht hat.
PC ProcCall Procedure call (Prozeduraufruf, Tabellenfunktion).
PreFilter PreFilter

Filter wenden Suchbedingungen an. Dazu gehören alle Arten von Prädikaten, Vergleiche zwischen beteiligten Unterabfrage-Bedingungen sowie EXISTS- und NOT EXISTS-Unterabfragen (und andere Formen quantifizierter Unterabfragen).

R R Ein umgekehrter Index-Scan. Der Index-Scan liest die Zeilen aus dem Index in umgekehrter Reihenfolge.
RL RowLimit

RowLimit gibt die ersten n Zeilen seiner Eingabe zurück und ignoriert die restlichen Zeilen. Zeilenbegrenzungen werden mit der TOP n- bzw. FIRST-Klausel der SELECT-Anweisung gesetzt.

ROWID RowIdScan In einem grafischen Plan wird ein RowID Scan als Tabellenname in einem Rechteck dargestellt.
ROWS RowConstructor

RowConstructor ist ein spezialisierter Operator, der eine virtuelle Zeile erstellt, die als Eingabe für andere Algorithmen verwendet werden kann.

RR RowReplicate

RowReplicate wird während der Ausführung von Mengenoperationen wie etwa EXCEPT ALL und INTERSECT ALL verwendet.

RT RecursiveTable Gibt an, dass als Ergebnis einer WITH-Klausel in einer Abfrage eine rekursive Tabelle benutzt wurde, wobei die WITH-Klausel für rekursive Vereinigungsabfragen verwendet wurde.
RU RecursiveUnion

RecursiveUnion wird während der Ausführung von rekursiven Vereinigungsabfragen verwendet.

SELECT Select Stammknoten eines SELECT-Vorgangs.
seq TableScan, ParallelTableScan In einem grafischen Plan werden Table-Scans als Tabellenname in einem Rechteck dargestellt.
Sortieren Sortieren Indizierte Sortierung oder Zusammenführungssortierung.
SrtN SortTopN

SortTopN wird für Abfragen verwendet, die eine TOP N-Klausel und eine ORDER BY-Klausel enthalten.

TermBreak TermBreak Der TermBreaker-Algorithmus für Volltextsuche.
UA UnionAll

UnionAll liest die Zeilen aus jeder seiner Eingaben und gibt sie wieder aus, gleichgültig ob Duplikate vorhanden sind oder nicht. Dieser Algorithmus wird verwendet, um UNION- und UNION ALL-Anweisungen zu implementieren.

UPDATE Update Der Stammknoten eines UPDATE-Vorgangs.
Window Window

Window wird bei der Berechnung von OLAP-Abfragen verwendet, die Fensterfunktionen verwenden.

Work Work table Ein interner Knoten, der ein Zwischenergebnis darstellt.
 Optimiererstatistiken-Feldbeschreibungen
 Knotenstatistiken-Feldbeschreibungen
 Häufig im Plan verwendete Statistiken
 Häufig im Plan verwendete Schätzungen
 Elemente im Plan in Bezug auf SELECT, INSERT, UPDATE und DELETE
 Elemente im Plan in Bezug auf Sperren
 Elemente im Plan in Bezug auf Scans
 Elemente im Plan in Bezug auf Index-Scans
 Elemente im Plan in Bezug auf Joins, Filter und Vorfilter
 Elemente im Plan in Bezug auf Hash-Filter
 Elemente im Plan in Bezug auf Vereinigung
 Elemente im Plan in Bezug auf GROUP BY
 Elemente im Plan in Bezug auf DISTINCT
 Elemente im Plan in Bezug auf die IN-Liste
 Elemente im Plan in Bezug auf SORT
 Elemente im Plan in Bezug auf Zeilenbegrenzung
 Siehe auch