Maison >base de données >tutoriel mysql >IN ou ANY dans PostgreSQL : quel opérateur choisir ?
Opérateurs IN et ANY de PostgreSQL : lequel choisir ?
PostgreSQL fournit deux structures, IN et ANY, qui sont couramment utilisées pour comparer des valeurs avec des ensembles. Bien que la fonctionnalité logique des deux structures soit essentiellement la même (les deux étant membres des ensembles de tests), elles présentent de subtiles différences en termes de syntaxe et de performances.
Variations grammaticales
IN a deux variantes de syntaxe :
ANY a également deux variantes grammaticales :
Cas d'utilisation
Notes de performances
En général, IN (collection) et ANY (collection) fonctionnent de la même manière, en utilisant une analyse d'index si disponible. Cependant, ANY (array) utilise une analyse séquentielle du tableau, ce qui peut être moins efficace pour les grands tableaux.
Comparaison avec = ANY (set)
Bien que IN (set) et = ANY (set) soient logiquement équivalents, dans certains cas, ils peuvent entraîner des plans de requête différents. L'utilisation de IN force PostgreSQL à créer une table temporaire pour la collection, ce qui peut ajouter une surcharge.
Polyvalence
ANY est plus général que IN car il peut être utilisé avec différents opérateurs (pas seulement =). Par exemple, vous pouvez utiliser ANY avec LIKE pour vérifier la correspondance de modèles.
Exclure
Pour rechercher des lignes qui ne font pas partie d'un ensemble, utilisez NOT (colonne = ANY (set)). Alternativement, vous pouvez utiliser ALL à cette fin.
Valeur NULL
Par défaut, les lignes avec des valeurs NULL ne sont pas comparées via IN ou ANY. Pour inclure des valeurs NULL, vous pouvez utiliser IS NOT TRUE avec une comparaison.
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!