Heim >Datenbank >MySQL-Tutorial >Sollte ich IN oder ANY in PostgreSQL-WHERE-Klauseln verwenden?
Verwenden Sie ANY anstelle von IN
in der WHERE-KlauselZusätzlich zur herkömmlichen IN-Klausel können Sie erwägen, ANY zu verwenden, um die Ergebnisse in der WHERE-Klausel zu filtern. PostgreSQL bietet zwei Syntaxvarianten:
IN-Ausdruck:
JEDER Ausdruck:
Während beide Methoden Unterabfragen verwenden können, unterscheidet sich ihre zweite Form in den Erwartungen.
Bedenken Sie Folgendes:
In Bezug auf die Leistung ist es unwahrscheinlich, dass ANY wesentlich schneller ist als IN. Die Wahl zwischen beiden hängt hauptsächlich von der Bequemlichkeit der Bereitstellung gefilterter Werte ab.
Unterabfragemethode:
Wenn der Filterwert bereits in der Datenbank vorhanden ist, kann die Verwendung einer Unterabfrage oder das Verknüpfen der Quelltabelle mit der Zieltabelle die Effizienz verbessern.
Array-Methode:
Um die beste Leistung zu erzielen, stellen Sie große Zahlen vom Client über ein Array, unnest() oder einen Join bereit oder stellen Sie einen Tabellenausdruck mit VALUES bereit.
= BELIEBIGE Syntax:
Für Array-Ausdrücke akzeptiert PostgreSQL einen Array-Konstruktor (ARRAY[1,2,3]) oder ein Array-Literal ('{1,2,3}'). Zur Typsicherheit kann eine explizite Typkonvertierung verwendet werden:
<code class="language-sql">ARRAY[1,2,3]::numeric[] '{1,2,3}'::bigint[]</code>
Übergabe eines Arrays von Ruby:
Um ein Array von Ruby zu übergeben, verwenden Sie die folgende Syntax:
<code class="language-ruby">MyModel.where('id = ANY(ARRAY[?]::int[])', ids.map { |i| i})</code>
Das obige ist der detaillierte Inhalt vonSollte ich IN oder ANY in PostgreSQL-WHERE-Klauseln verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!