Heim >Datenbank >MySQL-Tutorial >IN vs. ANY in PostgreSQL: Welchen Operator sollten Sie wählen?
PostgreSQLs IN- und ANY-Operatoren: Welchen soll ich wählen?
PostgreSQL bietet zwei Strukturen, IN und ANY, die üblicherweise zum Vergleichen von Werten mit Mengen verwendet werden. Während die logische Funktionalität der beiden Strukturen im Wesentlichen gleich ist (Beide Testsatzzugehörigkeit), weisen sie geringfügige Unterschiede in Syntax und Leistung auf.
Grammatikvariationen
IN hat zwei Syntaxvarianten:
ANY hat auch zwei grammatikalische Varianten:
Anwendungsfälle
Leistungshinweise
Im Allgemeinen funktionieren IN (Sammlung) und ANY (Sammlung) ähnlich und verwenden, sofern verfügbar, einen Indexscan. Allerdings verwendet ANY (Array) einen sequentiellen Scan des Arrays, was bei großen Arrays möglicherweise weniger effizient ist.
Vergleich mit = ANY (Satz)
Obwohl IN (Satz) und = ANY (Satz) logisch gleichwertig sind, können sie in einigen Fällen zu unterschiedlichen Abfrageplänen führen. Die Verwendung von IN zwingt PostgreSQL dazu, eine temporäre Tabelle für die Sammlung zu erstellen, was zu zusätzlichem Overhead führen kann.
Vielseitigkeit
ANY ist allgemeiner als IN, da es mit verschiedenen Operatoren verwendet werden kann (nicht nur =). Sie können beispielsweise ANY mit LIKE verwenden, um nach Musterübereinstimmungen zu suchen.
Ausschließen
Um Zeilen zu finden, die nicht in einer Menge sind, verwenden Sie NOT (column = ANY (set)). Alternativ können Sie für diesen Zweck auch ALL verwenden.
NULL-Wert
Standardmäßig werden Zeilen mit NULL-Werten nicht über IN oder ANY verglichen. Um NULL-Werte einzubeziehen, können Sie IS NOT TRUE mit einem Vergleich verwenden.
Das obige ist der detaillierte Inhalt vonIN vs. ANY in PostgreSQL: Welchen Operator sollten Sie wählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!