Frequentemente juntando-se a um
VALUES
cláusula é mais 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 atenção ao formato da "lista". Nos
values
cláusula, cada valor precisa ser colocado entre parênteses. ('v1'), ('v2'), ...
em vez de ('v1', 'v2', ...)
Exemplo on-line:http://rextester.com/UUWVG71217
Observe que, se a coluna com a qual você compara os valores for realmente um número (por exemplo, inteiro), você não especifique os valores usando aspas simples, por exemplo
values (1),(2),(3),...(2000)