Ваш второй пример будет практически работать как есть.Просто нужна переменная
Declare @theThing varchar(max)
SELECT @theThing = myThing FROM current
IF (@theThing IS NULL)
BEGIN
SELECT @theThing = myThing FROM ARCHIVE
END
-- to 'output' the value
SELECT @theThing
Затем вы можете вставить этот код в хранимую процедуру или функцию или что-то в этом роде.
Обратите внимание, будет ли он быстрее объединения или нет.Моя догадка была бы выше, будет быстрее, если myThing
проиндексирован в обеих таблицах.Но это только предположение.
edit: На производительность также будет влиять то, как часто эта вещь встречается в первой таблице.Приведенный выше код, скорее всего, будет быстрее, чем union
, если в большинстве случаев цель находится в первой таблице.
edit: Как указывает Мартин, все это того стоит, только если в двух таблицах гарантированно будет только одно совпадение.В противном случае вам нужен союз.