## IN-Bedingung

IN-Bedingungen sind Suchbedingungen mit IN-Prädikat.

Für den SQL-Optimierer gelten die folgenden Einschränkungen für IN-Bedingungen:

● Operator ist der Operator IN

● IN-Bedingungen haben eine der folgenden Formen:

<column_spec> IN (<extended_value_spec>,...)
<column_spec> IN <subquery>

Nur wenn eine IN-Bedingung in dieser Form vorliegt, kann der SQL-Optimierer sie zum Ermitteln einer optimalen Suchstrategie auswerten.

Bedingungen der folgenden Form werden, wenn möglich, in einen Ausdruck ohne NOT mit entsprechend negiertem Operator überführt:

...NOT(<column_spec> NOT IN (<extended_value_spec>,...))

...NOT(<column_spec> NOT IN <subquery>)

Der SQL-Optimierer verarbeitet dann die umgeformte Bedingung weiter.

### 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

SELECT * FROM hotel.customer
WHERE name IN ('Smith', 'Miller')

Qualifikation: name IN ('Smith', 'Miller')
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 und Miller 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, COSTVALUE IS | 21

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

Siehe auch:

EXPLAIN-Anweisung

SQL-Referenzhandbuch, IN-Prädikat (in_predicate)