PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Query SQL utilizzando IN con un elenco molto lento

Molto spesso si unisce a un VALUES la clausola è più efficiente:

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

Presta attenzione al formato della "lista". Nei values clausola, ogni valore deve essere racchiuso tra parentesi. ('v1'), ('v2'), ... invece di ('v1', 'v2', ...)

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

Tieni presente che se la colonna con cui confronti i valori è realmente un numero (ad es. intero), non specificare i valori utilizzando virgolette singole, ad es. values (1),(2),(3),...(2000)