Wenn die SQL-Anweisung Suchbedingungen für Schlüsselspalten enthält, kann der SQL-Optimierer folgende Suchstrategien verwenden:
Suchbedingung |
Suchstrategie des SQL-Optimierers |
Gleichheitsbedingung für jede Schlüsselspalte |
Es wird direkt auf die entsprechende(n) Zeile(n) zugegriffen. |
IN-Bedingung für eine Schlüsselspalte, und auf allen anderen Schlüsselspalten eine Gleichheitsbedingung (alle Spalten, die vor der Spalte mit der IN-Bedingung im Schlüssel liegen) |
Es wird direkt auf die entsprechende(n) Zeile(n) zugegriffen. |
Für die Schlüsselspalten wird eine Unter- und Obergrenze für den zulässigen Schlüsselbereich gebildet. Alle Suchstrategien, auch die Strategien für Invertierungen, nutzen das Wissen über diesen zulässigen Schlüsselbereich aus. |
Die bei den Erläuterungen zum SQL-Optimierer verwendeten Beispiele stützen sich auf die Demo-Datenbank DEMODB und ihre vollständigen Demo-Daten im Schema HOTEL.
Konzepte des Datenbanksystems, Objekte im Schema HOTEL
SELECT name FROM hotel.customer
WHERE cno = 7020
Qualifikation: cno =
7020
Primärschlüssel der Tabelle CUSTOMER: cno
Indizes über qualifizierte Spalten: keine
genutzte Suchstrategie: EQUAL CONDITION FOR
KEY
Da der Primärschlüssel durch die Suchbedingung voll qualifiziert wurde, erfolgt ein direkter Zugriff auf den Satz.
Ergebnis der EXPLAIN-Anweisung
TABLENAME |
COLUMN_OR_INDEX |
STRATEGY |
PAGECOUNT |
CUSTOMER |
|
EQUAL CONDITION FOR KEY |
40 |
|
CNO |
(USED KEY COLUMN) |
|
|
|
RESULT IS NOT COPIED, |
|
SELECT * FROM hotel.city
WHERE zip IN ('04270',
'04570',
'04770')
Qualifikation: zip IN
('04270', '04570',
'04770')
Primärschlüssel der Tabelle CUSTOMER: zip
Indizes über qualifizierte Spalten: keine
genutzte Suchstrategie: RANGE CONDITION FOR
KEY
Ergebnis der EXPLAIN-Anweisung
TABLENAME |
COLUMN_OR_INDEX |
STRATEGY |
PAGECOUNT |
CITY |
FULL_NAME_INDEX |
RANGE CONDITION FOR KEY |
11 |
|
ZIP |
(USED KEY COLUMN) |
|
|
|
RESULT IS NOT COPIED, |
|
SELECT zip, name FROM hotel.city
WHERE zip BETWEEN '10000' AND '20000'
Qualifikation: BETWEEN
'10000' AND '20000'
Primärschlüssel der Tabelle CUSTOMER: zip
Indizes über qualifizierte Spalten: keine
genutzte Suchstrategie: RANGE CONDITION FOR
KEY
Ergebnis der EXPLAIN-Anweisung
TABLENAME |
COLUMN_OR_INDEX |
STRATEGY |
PAGECOUNT |
CITY |
|
RANGE CONDITION FOR KEY |
11 |
|
ZIP |
(USED KEY COLUMN) |
|
|
|
RESULT IS NOT COPIED, |
|
Weitere einfache Beispiel-SQL-Anweisungen
finden Sie im SQL-Tutorial.
Siehe auch: