Comparaison des opérateurs IN et ANY dans PostgreSQL
Aperçu
PostgreSQL fournit deux structures similaires, IN et ANY, pour faire correspondre les valeurs avec des ensembles ou des listes. Bien que leur fonctionnalité logique soit la même, il existe des différences significatives en termes de syntaxe et d’utilisation.
Syntaxe et correspondance
DANS :
TOUT :
Définir la correspondance
IN et ANY sont équivalents pour faire correspondre les valeurs aux ensembles. Par exemple :
<code class="language-sql">SELECT * FROM table WHERE id IN (1, 2, 3); SELECT * FROM table WHERE id = ANY('{1, 2, 3}');</code>
Correspondance de tableaux
Cependant, il existe une variante de syntaxe supplémentaire de ANY qui prend en charge la correspondance array. Cela vous permet de comparer la valeur au type de données réel du tableau :
<code class="language-sql">SELECT * FROM table WHERE id = ANY(ARRAY[1, 2, 3]);</code>
Optimisation des requêtes
Dans certains cas, le choix entre IN et ANY affecte l'optimisation des requêtes. Pour les grandes collections, vous pouvez obtenir de meilleures performances en transmettant la collection à l'aide d'une structure IN.
Autres fonctionnalités de TOUT
Exemple
Pour démontrer ces différences, considérons l'exemple suivant :
<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>
L'expression IN exclura les lignes avec des valeurs NULL, tandis que l'expression ANY les inclura. De plus, les expressions ANY peuvent utiliser des opérateurs spécifiques au tableau, tels que id > ANY('{1, 2, 3}').
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!