Consider 2 queries which need to return all columns:
Query #1
select *
from TA
where id in (select id from TB where filterColumn = ?)
Query #2
select *
from TA
where id in (?, ?, ? ... n)
TA contains millions of records and subquery on TB returns 1-2000 records (but generally, just few hundreds).
Say, result of these queries would be 10k records.
For the 1st query, there would be 1 clustered index scan for all records.
For the 2nd - 10k key lookups. Also, if there are more than 2.1k parameters - there would be multiple queries (rare case).
In terms of general performance and simultaneous insert/update/delete statements, which of the queries is preferred?