Maison > base de données > tutoriel mysql > Dois-je utiliser IN ou ANY dans les clauses WHERE de PostgreSQL ?

Dois-je utiliser IN ou ANY dans les clauses WHERE de PostgreSQL ?

DDD
Libérer: 2025-01-14 20:42:48
original
918 Les gens l'ont consulté

Should I Use IN or ANY in PostgreSQL WHERE Clauses?

Utilisez ANY au lieu de IN

dans la clause WHERE

En plus de la clause IN traditionnelle, vous pouvez envisager d'utiliser ANY pour filtrer les résultats dans la clause WHERE. PostgreSQL propose deux variantes de syntaxe :

IN expression :

  • expression IN (sous-requête)
  • expression IN (valeur [, ...])

TOUTE expression :

  • opérateur d'expression ANY (sous-requête)
  • opérateur d'expression ANY (expression de tableau)

Bien que les deux méthodes puissent utiliser des sous-requêtes, leur deuxième forme diffère en termes d'attentes.

Comment choisir ?

Considérez ce qui suit :

  • ANY offre une plus grande flexibilité et peut être utilisé avec n'importe quel opérateur binaire qui renvoie une valeur booléenne.
  • IN est un cas particulier de ANY et fonctionne comme = ANY.

En termes de performances, il est peu probable que ANY soit significativement plus rapide que IN. Le choix entre les deux dépend principalement de la commodité de fournir des valeurs filtrées.

Méthode de sous-requête :

Si la valeur du filtre existe déjà dans la base de données, l'utilisation d'une sous-requête ou la jointure de la table source avec la table cible peuvent améliorer l'efficacité.

Méthode tableau :

Pour de meilleures performances, fournissez de grands nombres du client via un tableau, unnest() ou une jointure, ou fournissez une expression de table en utilisant VALUES.

= TOUTE syntaxe :

Pour les expressions de tableau, PostgreSQL accepte un constructeur de tableau (ARRAY[1,2,3]) ou un littéral de tableau ('{1,2,3}'). Pour la sécurité des types, une conversion de type explicite peut être utilisée :

<code class="language-sql">ARRAY[1,2,3]::numeric[]
'{1,2,3}'::bigint[]</code>
Copier après la connexion

Passer un tableau depuis Ruby :

Pour transmettre un tableau depuis Ruby, utilisez la syntaxe suivante :

<code class="language-ruby">MyModel.where('id = ANY(ARRAY[?]::int[])', ids.map { |i| i})</code>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal