Gleichheitsbedingungen sind Suchbedingungen mit Vergleichsprädikat.
Für den SQL-Optimierer gelten folgende Einschränkungen für Gleichheitsbedingungen:
● Operator ist nur der Vergleichsoperator =
● Die Gleichheitsbedingungen haben eine der folgenden Formen:
<column_spec> = <extended_value_spec>
<column_spec> = <subquery>
Nur wenn eine Gleichheitsbedingung in dieser Form vorliegt, kann der SQL-Optimierer sie zum Ermitteln einer optimalen Suchstrategie auswerten. Wenn Gleichheitsbedingungen in einer anderen Form vorliegen, dann versucht der SQL-Optimierer sie umzuformen.
Ausdrücke der folgenden Formen formt der SQL-Optimierer in Bedingungen ohne NOT mit entsprechend negiertem Operator = um:
...NOT(<column_spec> <> <extended_value_spec>)
...NOT(<column_spec> <> <subquery>)
Der SQL-Optimierer verarbeitet dann die umgeformte Bedingung weiter.
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.customer
WHERE name = 'Smith'
Qualifikation: name = 'Smith'
Primärschlüssel der Tabelle CUSTOMER: cno
Indizes über qualifizierte Spalten: FULL_NAME_INDEX (name, firstname)
genutzte Suchstrategie: RANGE CONDITION FOR INDEX
Der Index FULL_NAME_INDEX (name, firstname) kann genutzt werden, um alle Einträge mit dem Namen Smith zu finden.
Ergebnis der EXPLAIN-Anweisung
TABLENAME |
COLUMN_OR_INDEX |
STRATEGY |
PAGECOUNT |
CUSTOMER |
FULL_NAME_INDEX |
RANGE CONDITION FOR INDEX |
34 |
|
NAME |
(USED INDEX COLUMN) |
|
|
|
RESULT IS NOT COPIED, |
|
Weitere einfache Beispiel-SQL-Anweisungen
finden Sie im SQL-Tutorial.
Siehe auch:
SQL-Referenzhandbuch, Vergleichsprädikat (comparison_predicate)