Amazon Redshift ne prendra plus en charge la création de nouveaux Python UDFs à compter du 1er novembre 2025. Si vous souhaitez utiliser Python UDFs, créez la version UDFs antérieure à cette date. Le Python existant UDFs continuera à fonctionner normalement. Pour plus d'informations, consultez le billet de blog
Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Condition IN
Une condition IN teste une valeur d’adhésion dans une sous-requête ou un ensemble de valeurs.
Syntaxe
expression [ NOT ] IN (expr_list | table_subquery)
Arguments
- expression
-
Une expression de type numeric, character ou datetime évaluée par rapport à expr_list ou table_subquery et qui doit être compatible avec le type de données de cette liste ou sous-requête.
- expr_list
-
Une ou plusieurs expressions délimitées par des virgules, ou un ou plusieurs ensembles d’expressions délimitées par des virgules et entourées par des parenthèses.
- table_subquery
-
Une sous-requête qui correspond à une table avec une ou plusieurs lignes, mais est limitée à une seule colonne dans la liste de sélection.
- IN | NOT IN
-
IN retourne la valeur true si l’expression est membre de la liste d’expressions ou de la requête. NOT IN retourne la valeur true si l’expression n’est pas membre. IN et NOT IN retournent la valeur NULL et aucune ligne n’est retournée dans les cas suivants : si expression génère null, s’il n’y a aucune expr_list correspondante ou si les valeurs de table_subquery et au moins l’une de ces lignes de comparaison entraînent une valeur null.
Exemples
Les conditions suivantes sont vraies uniquement pour les valeurs répertoriées :
qtysold in (2, 4, 5) date.day in ('Mon', 'Tues') date.month not in ('Oct', 'Nov', 'Dec')
Optimisation pour les grandes listes IN
Afin d’optimiser les performances des requêtes, une liste IN qui inclut plus de 10 valeurs est analysée en interne comme un ensemble (array) scalaire. Les listes IN avec moins de 10 valeurs sont évaluées comme une série de prédicats OR. Cette optimisation est prise en charge pour les types de données SMALLINT, INTEGER, BIGINT, REAL, DOUBLE PRECISION, BOOLEAN, CHAR, VARCHAR, DATE, TIMESTAMP et TIMESTAMPTZ.
Examinez la sortie EXPLAIN de la requête pour voir l’effet de cette optimisation. Par exemple :
explain select * from sales QUERY PLAN -------------------------------------------------------------------- XN Seq Scan on sales (cost=0.00..6035.96 rows=86228 width=53) Filter: (salesid = ANY ('{1,2,3,4,5,6,7,8,9,10,11}'::integer[])) (2 rows)