Utilisez ANY au lieu de IN
dans la clause WHEREEn 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 :
TOUTE expression :
Bien que les deux méthodes puissent utiliser des sous-requêtes, leur deuxième forme diffère en termes d'attentes.
Considérez ce qui suit :
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>
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>
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!