Рассмотрим 2 запроса, которые должны вернуть все столбцы:
Запрос № 1
select *
from TA
where id in (select id from TB where filterColumn = ?)
Запрос № 2
select *
from TA
where id in (?, ?, ? ... n)
TA содержит миллионы записей, а подзапрос по ТБ возвращает 1-2000 записей (но, как правило, всего несколько сотен).
Скажем, результат этих запросов будет 10k записей.
Для 1-го запроса будет выполнено 1 сканирование кластерного индекса для всех записей.
Для 2-го - 10 тыс. Ключевых поисков. Кроме того, если имеется более 2,1 тыс. Параметров - будет несколько запросов (редкий случай).
С точки зрения общей производительности и одновременных операторов вставки / обновления / удаления, какой из запросов предпочтительнее?