Grundsätzlich kann jede Suche sequentiell, also Zeile für Zeile, durch die gesamte Tabelle erfolgen, d.h. die einfachste Suchstragie des SQL-Optimierers ist die sequentielle Suche. Diese Suchstrategie wird in folgenden Fällen gewählt:
● Es ist keine Suchbedingung angegeben.
● Weder für Schlüsselspalten noch für indizierte Spalten ist eine Suchbedingung angegeben.
Falls die möglichen nicht-sequentiellen Suchstrategien des SQL-Optimierers aufwändiger wären als die sequentielle Suche, wird die Tabelle sequentiell abgearbeitet.
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 * FROM hotel.city
Qualifikation: keine
Primärschlüssel der Tabelle CITY: zip
Indizes über qualifizierte Spalten: keine
genutzte Suchstrategie: TABLE
SCAN
Es ist keine Suchbedingung (Qualifikation) angegeben.
Ergebnis der EXPLAIN-Anweisung
TABLENAME |
COLUMN_OR_INDEX |
STRATEGY |
PAGECOUNT |
CITY |
|
TABLE SCAN |
11 |
|
|
RESULT IS NOT
COPIED, |
|
SELECT * FROM hotel.city
WHERE name = 'Oxford'
Qualifikation: WHERE name =
'Oxford'
Primärschlüssel der Tabelle CITY: zip
Indizes über qualifizierte Spalten: keine
genutzte Suchstrategie: TABLE SCAN
Die Suchbedingung ist nicht über die Primärschlüsselspalte angegeben.
Ergebnis der EXPLAIN-Anweisung
TABLENAME |
COLUMN_OR_INDEX |
STRATEGY |
PAGECOUNT |
CITY |
|
TABLE SCAN |
11 |
|
|
RESULT IS NOT
COPIED, |
|
Weitere einfache Beispiel-SQL-Anweisungen
finden Sie im SQL-Tutorial.
Siehe auch:
Suchbedingungen für Schlüsselspalten