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)