PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Zapytanie SQL używające IN z bardzo powolną listą

Bardzo często dołączanie do VALUES klauzula jest bardziej wydajna:

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

Zwróć uwagę na format „listy”. W values klauzula, każda wartość musi być ujęta w nawiasy. ('v1'), ('v2'), ... zamiast ('v1', 'v2', ...)

Przykład online:http://rextester.com/UUWVG71217

Pamiętaj, że jeśli kolumna, z którą porównujesz wartości, naprawdę jest liczbą (np. liczbą całkowitą), nie podać wartości w apostrofach, np. 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. Coalesces jsonArrayAgg do pustej tablicy w jOOQ

  2. Dziedziczenie PostgreSQL z JPA, Hibernate

  3. Pobierz częściową bazę danych z heroku

  4. Powolne zapytanie z lewym sprzężeniem zewnętrznym i warunkiem zerowym

  5. MNIEJSZE PODOBNE vs iLIKE