PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Permintaan SQL menggunakan IN dengan daftar sangat lambat

Sangat sering bergabung ke VALUES klausa lebih efisien:

SELECT count(*) 
FROM mytable 
  JOIN (
     values ('v1'), ('v2'), (...), ('v2000')
  ) as lookup(value) on lookup.value = mytable.some_column
WHERE NOT other_column = 'something'
AND another_column = 'something_else';

Perhatikan format "daftar". Dalam values klausa, setiap nilai harus diapit dalam tanda kurung. ('v1'), ('v2'), ... bukannya ('v1', 'v2', ...)

Contoh online:http://rextester.com/UUWVG71217

Perhatikan bahwa jika kolom yang Anda bandingkan nilainya benar-benar berupa angka (mis. bilangan bulat), Anda harus tidak tentukan nilai menggunakan tanda kutip tunggal, mis. values (1),(2),(3),...(2000)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana pengguna dapat menyukai dan tidak menyukai satu sama lain memposting menggunakan sekuel postgres nodejs?

  2. Kesalahan saat menjalankan perintah psql di /docker-entrypoint-initdb.d/db_init.sh (psql:tidak dapat terhubung ke server:Koneksi ditolak)

  3. Bagaimana saya bisa menguji apakah ada kolom dalam tabel menggunakan pernyataan SQL?

  4. Argumen opsional dalam fungsi PL/pgSQL

  5. Saya perlu menetapkan semua aktivitas dalam SQL ke satu ID, tetapi saat ini setiap aktivitas memiliki tiga id