PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

SQL-Abfrage mit IN mit einer Liste sehr langsam

Wird sehr oft mit einem VALUES verbunden Klausel ist effizienter:

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

Achten Sie auf das Format der "Liste". In den values -Klausel muss jeder Wert in Klammern eingeschlossen werden. ('v1'), ('v2'), ... statt ('v1', 'v2', ...)

Online-Beispiel:http://rextester.com/UUWVG71217

Beachten Sie, dass Sie nicht sollten, wenn die Spalte, mit der Sie die Werte vergleichen, wirklich eine Zahl ist (z. B. eine ganze Zahl). Geben Sie die Werte in einfachen Anführungszeichen an, z. values (1),(2),(3),...(2000)