PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Truy vấn SQL sử dụng IN với danh sách rất chậm

Rất thường xuyên tham gia vào một VALUES mệnh đề hiệu quả hơn:

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';

Chú ý đến định dạng của "danh sách". Trong các giá trị values mệnh đề, mỗi giá trị cần được đặt trong dấu ngoặc đơn. ('v1'), ('v2'), ... thay vì ('v1', 'v2', ...)

Ví dụ trực tuyến: http://rextester.com/UUWVG71217

Lưu ý rằng nếu cột bạn so sánh các giá trị thực sự là một số (ví dụ:số nguyên), bạn không nên chỉ định các giá trị bằng cách sử dụng các dấu ngoặc kép, ví dụ:Các giá trị 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. Hiển thị tin nhắn mới nhất từ ​​bảng tin nhắn, nhóm theo người dùng

  2. Truy vấn jsonb postgres trên đối tượng lồng nhau

  3. Django ORM so sánh bộ tuples / thứ tự từ vựng

  4. Sử dụng thời gian hiện tại theo giờ UTC làm giá trị mặc định trong PostgreSQL

  5. Postgres tắt ngay lập tức khi bắt đầu với docker-soạn