sql >> Base de Datos >  >> RDS >> PostgreSQL

Consulta SQL usando IN con una lista muy lenta

Muy a menudo se une a un VALUES cláusula es más eficiente:

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

Preste atención al formato de la "lista". En los values cláusula, cada valor debe estar entre paréntesis. ('v1'), ('v2'), ... en lugar de ('v1', 'v2', ...)

Ejemplo en línea:http://rextester.com/UUWVG71217

Tenga en cuenta que si la columna con la que compara los valores es realmente un número (por ejemplo, un número entero), no especifique los valores usando comillas simples, p. values (1),(2),(3),...(2000)