Возможно, вы захотите попробовать JOIN вместо WHERE id IN - хотя я думаю, что вы получите тот же план запроса.
Итак, я полагаю, вы делаете:
SELECT COl1, Col2, ...
FROM MyTable
WHERE id IN (SELECT id FROM @MyTempTable)
В этом случае эквивалентный синтаксис JOIN будет:
SELECT COl1, Col2, ...
FROM MyTable AS T1
JOIN @MyTempTable AS T2
ON T2.id = T1.id
и во втором случае, будет ли 1 или много строк, это будет очень эффективно при условии индексации [id] (я предполагаю, что это PK в вашей таблице и используется кластерный индекс).
(Помните, что если в @MyTempTable у вас есть идентификаторы DUP, вы также получите дубликаты из MyTable :()
Для лучшей производительности стоило бы явно объявить [id] как PK в вашей временной таблице (но, учитывая, что он содержит только несколько строк, он, вероятно, не будет иметь больших шансов)
DECLARE @TempTable TABLE
(
id int NOT NULL,
PRIMARY KEY
(
id
)
)