## Suchbedingungen für Schlüsselspalten

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.
Bereichsbedingungen | 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.

### Beispiele

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

#### Gleichheitsbedingung

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, COSTVALUE IS | 1

#### IN-Bedingung

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, COSTVALUE IS | 1

#### Bereichsbedingung

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, COSTVALUE IS | 1

Weitere einfache Beispiel-SQL-Anweisungen finden Sie im SQL-Tutorial.

Siehe auch:

EXPLAIN-Anweisung

Suchbedingungen für indizierte Spalten

Liste aller Suchstrategien