Vergleich der IN- und ANY-Operatoren in PostgreSQL
Übersicht
PostgreSQL bietet zwei ähnliche Strukturen, IN und ANY, zum Abgleichen von Werten mit Mengen oder Listen. Obwohl ihre logische Funktionalität dieselbe ist, gibt es erhebliche Unterschiede in der Syntax und Verwendung.
Syntax und Matching
IN:
JEDER:
Matching einstellen
IN und ANY sind für den Abgleich von Werten mit Mengen gleichwertig. Zum Beispiel:
<code class="language-sql">SELECT * FROM table WHERE id IN (1, 2, 3); SELECT * FROM table WHERE id = ANY('{1, 2, 3}');</code>
Array-Abgleich
Es gibt jedoch eine zusätzliche Syntaxvariante von ANY, die den Array-Abgleich unterstützt. Dadurch können Sie den Wert mit dem tatsächlichen Array-Datentyp vergleichen:
<code class="language-sql">SELECT * FROM table WHERE id = ANY(ARRAY[1, 2, 3]);</code>
Abfrageoptimierung
In manchen Fällen wirkt sich die Wahl zwischen IN und ANY auf die Abfrageoptimierung aus. Bei großen Sammlungen können Sie möglicherweise eine bessere Leistung erzielen, indem Sie die Sammlung mithilfe einer IN-Struktur übergeben.
Weitere Funktionen von ANY
Beispiel
Um diese Unterschiede zu veranschaulichen, betrachten Sie das folgende Beispiel:
<code class="language-sql">SELECT * FROM table WHERE id IN ('1', '2', NULL, 3); SELECT * FROM table WHERE id = ANY('{1, 2, NULL, 3}');</code>
IN-Ausdruck schließt Zeilen mit NULL-Werten aus, während ANY-Ausdruck sie einschließt. Darüber hinaus können ANY-Ausdrücke arrayspezifische Operatoren verwenden, z. B. id >
Das obige ist der detaillierte Inhalt vonIN vs. ANY in PostgreSQL: Wann sollten Sie die einzelnen Operatoren verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!