PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

SQL заявка, използваща IN със списък, много бавна

Много често се присъединява към VALUES клаузата е по-ефективна:

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

Обърнете внимание на формата на "списъка". В values клауза, всяка стойност трябва да бъде оградена в скоби. ('v1'), ('v2'), ... вместо ('v1', 'v2', ...)

Онлайн пример:http://rextester.com/UUWVG71217

Имайте предвид, че ако колоната, с която сравнявате стойностите, наистина е число (напр. цяло число), трябва да не посочете стойностите, като използвате единични кавички, напр. 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. postgres - където в (списък) - колоната не съществува

  2. Как JSON Marshall pq.NullTime в UTC, а не в местната часова зона?

  3. Инсталиране на PDO-драйвери за PostgreSQL на Mac (с помощта на Zend за eclipse)

  4. Мигрирайте дъмпа на postgres към RDS

  5. Стартирайте rails код след извършване на актуализация на базата данни, без after_commit