Anfang des Inhaltsbereichs

Hintergrunddokumentation Suchbedingungen für Schlüsselspalten Dokument im Navigationsbaum lokalisieren

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

Beispiel

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

Beispiel

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

Beispiel

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 StrukturlinkSQL-Tutorial.

Siehe auch:

EXPLAIN-Anweisung

Suchbedingungen für indizierte Spalten

Liste aller Suchstrategien

Ende des Inhaltsbereichs