Как правило, наилучшим вариантом является использование предложения IN в ваших утверждениях ... при условии, что вы используете подзапрос для более крупных наборов значений.
Ответ всегда должен быть: от! Из вашего вопроса неясно, будет ли ваш список значений SELECT, или вы бы их жестко кодировали. Это определенно было бы более результативным, если бы эти несколько тысяч значений находились в другой таблице (временная таблица или переменная таблицы), и вы их подписали. т.е.
SELECT * FROM Customer
WHERE CustomerID IN (SELECT ID FROM MyOtherLargeTableOfCustomers)
- как хорошо индексируются в том, что столбец, который вы выполняете, что
IN
пункт о?
- Какой тип данных? Если числовой тип данных, то у вас не должно быть проблем с производительностью.
- убедитесь, что ваш
STATISTICS
(если SQL Server) регулярно обновляется.
- Если тип данных основан на символах или ориентир, вы можете столкнуться с некоторыми проблемами с производительностью, особенно при одновременном запуске нескольких запросов, а список - в тысячах, как вы описываете.
- считать
JOIN
вместо этих таблиц; что всегда должно производить более быстрый запрос.
SELECT * FROM Customer AS C
INNER JOIN MyOtherLargeTableOfCustomers AS M
ON C.CustomerID = M.CustomerID