У меня вопрос к гуру sql.
Есть две таблицы с почти идентичной структурой.
На основании параметра, переданного в хранимую процедуру, мне нужно собрать данные из той или иной таблицы.
Как это сделать наилучшим образом?
Пожалуйста, не предлагайте объединять эти таблицы в одну - это не подходит.
Я сделал это следующим образом (MSSQL Server 2008):
Select *
FROM
String s
JOIN (
SELECT id
,TypeCode
,ProdNo
FROM Table1
WHERE @param = 1 AND TypeCode= 'INV'
UNION
SELECT id
,TypeCode
,ProdNo
FROM Table2
WHERE @param = 2 AND TypeCode= 'INV'
) m ON m.Id = s.Id
WHERE s.Id = 256
, но когда я посмотрел на план выполнения, я был удивлен, потому что он получал данные из обеих таблиц в параллельных потоках и только после этого фильтровал по значению @param.
Я думал, что фильтрация будет выполняться на первом этапе, а данные будут собираться из одной таблицы.
Можно ли сделать выбор только из одной таблицы, не разбивая запрос на два запроса и не используя IFоператор?
спасибо