Dalam kondisi - Amazon Redshift

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Dalam kondisi

Kondisi IN menguji nilai untuk keanggotaan dalam satu set nilai atau dalam subquery.

Sintaks

expression [ NOT ] IN (expr_list | table_subquery)

Argumen

ekspresi

Ekspresi numerik, karakter, atau datetime yang dievaluasi terhadap expr_list atau table_subquery dan harus kompatibel dengan tipe data daftar atau subquery tersebut.

expr_list

Satu atau lebih ekspresi yang dibatasi koma, atau satu atau lebih kumpulan ekspresi yang dibatasi koma yang dibatasi oleh tanda kurung.

table_subquery

Subquery yang mengevaluasi tabel dengan satu atau lebih baris, tetapi terbatas hanya satu kolom dalam daftar pilihannya.

DALAM | NOT DI

IN mengembalikan true jika ekspresi adalah anggota dari daftar ekspresi atau query. NOTIN mengembalikan true jika ekspresi bukan anggota. IN dan NOT IN kembali NULL dan tidak ada baris yang dikembalikan dalam kasus berikut: Jika ekspresi menghasilkan null; atau jika tidak ada nilai expr_list atau table_subquery yang cocok dan setidaknya satu dari baris perbandingan ini menghasilkan null.

Contoh

Kondisi berikut benar hanya untuk nilai-nilai yang tercantum:

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

Optimalisasi untuk Daftar IN Besar

Untuk mengoptimalkan kinerja kueri, daftar IN yang mencakup lebih dari 10 nilai dievaluasi secara internal sebagai array skalar. Daftar IN dengan nilai kurang dari 10 dievaluasi sebagai serangkaian predikat OR. Optimalisasi ini didukung untuk SMALLINTINTEGER,BIGINT,REAL, DOUBLEPRECISION,,BOOLEAN,CHAR,VARCHAR,DATE,TIMESTAMP, dan tipe TIMESTAMPTZ data.

Lihatlah EXPLAIN output untuk kueri untuk melihat efek dari pengoptimalan ini. Sebagai contoh:

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)