LIKE-Bedingungen sind Suchbedingungen mit LIKE-Prädikat.
Für den SQL-Optimierer gelten folgende Einschränkungen für LIKE-Bedingungen:
● Operator ist der Operator LIKE .
●
LIKE-Bedingungen haben folgende Form:
<column_spec>
LIKE <extended_value_spec>
● Die verwendete Wertespezifikation (extended_value_spec) darf nicht mit den SQL-Syntaxelementen match_string bzw. match_set eines LIKE-Prädikats beginnen.
Nur wenn eine LIKE-Bedingungen in dieser Form vorliegt, kann der SQL-Optimierer sie zum Ermitteln einer optimalen Suchstrategie auswerten.
Bedingungen der Form ...NOT (<column_spec> NOT LIKE<extended_value_spec>) werden, wenn möglich, in einen Ausdruck <column_spec> LIKE <extended_value_spec> überführt.
Der SQL-Optimierer verarbeitet dann die umgeformte Bedingung weiter.
Die bei den Erläuterungen zum SQL-Optimierer verwendeten Beispiele stützten 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 LIKE 'Wa%'
Qualifikation: name LIKE
'Wa%'
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. Der Startschlüssel wird beim ersten Satz gesetzt, der die LIKE-Bedingung in den ersten beiden Zeichenwerten erfüllt (Wade, Francisco). Der Stoppschlüssel liegt bei dem ersten Satz, der der Bedingung nicht mehr entspricht (Weaver, Alfredo).
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, LIKE-Prädikat (like_predicate)