IN 条件 - AWS Clean Rooms

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

IN 条件

An IN 条件は、一連の値またはサブクエリのメンバーシップの値をテストします。

構文

expression [ NOT ] IN (expr_list | table_subquery)

引数

expression

expr_list または table_subquery に対して評価される数値、文字、または日時であり、当該リストまたはサブクエリのデータ型との互換性が必要です。

expr_list

1 つまたは複数のカンマ区切り式、あるいは括弧で囲まれたカンマ区切り式の 1 つまたは複数のセット。

table_subquery

評価結果として 1 つまたは複数の行を持つテーブルを返すサブクエリですが、その選択リスト内の列数は 1 個に制限されています。

IN | NOT IN

IN は、式が式リストまたはクエリのメンバーである場合に true を返します。 NOTIN は、式がメンバーでない場合に true を返します。IN NULLと NOT IN は戻り、次の場合は行が返されません。が null を生成する場合、または一致する expr_list 値または table_subquery 値がなく、これらの比較行の少なくとも 1 つが null を生成する場合。

次の条件は、リストされた値の場合にのみ true を返します。

qtysold in (2, 4, 5) date.day in ('Mon', 'Tues') date.month not in ('Oct', 'Nov', 'Dec')

大規模 IN リストの最適化

クエリのパフォーマンスを最適化するために、10 個を超える値が含まれる IN リストは内部的にスカラー配列として評価されます。10 個未満の値が含まれる IN リストは一連の OR 述語として評価されます。この最適化は、SMALLINT、、INTEGER、BIGINT、REAL、DOUBLEPRECISION、BOOLEAN、、CHARVARCHAR、DATETIMESTAMP、および TIMESTAMPTZ データ型でサポートされています。

クエリのEXPLAIN出力を見て、この最適化の効果を確認します。以下に例を示します。

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)