Сколько строк находится во временной таблице, и является ли "Field2" во временной таблице первичным ключом?
Если вы не выбираете какие-либо строки в правой таблице левого объединения, и соединение относится к первичному ключу (или, возможно, уникальному ключу), и вы не ссылаетесь ни на какие столбцы из правой таблицы, SQL Server может избежать необходимость доступа к временной таблице вообще (поскольку наличие или отсутствие соединяющей строки не влияет на конечный результат):
Пример. Настройка стола:
create table T1 (
ID int not null primary key,
Col1 varchar(10) not null
)
go
insert into T1 (ID,Col1)
select 1,'a' union all
select 2,'b' union all
select 3,'c'
go
create table #t2 (
ID int not null primary key,
Col2 varchar(10) not null
)
go
insert into #t2 (ID,Col2)
select 1,'d' union all
select 2,'e' union all
select 4,'f'
go
create table #t3 (
ID int not null,
Col3 varchar(10) not null
)
go
insert into #t3 (ID,Col3)
select 1,'d' union all
select 2,'e' union all
select 1,'f'
И запросы:
select T1.ID,T1.Col1 from T1 left join #t2 t2 on T1.ID = t2.ID
select T1.ID,T1.Col1,t2.Col2 from T1 left join #t2 t2 on T1.ID = t2.ID
select T1.ID,T1.Col1 from T1 left join #t3 t3 on T1.ID = t3.ID
select T1.ID,T1.Col1,t3.Col2 from T1 left join #t2 t3 on T1.ID = t3.ID
Во всех запросах, кроме первого, соединение происходит, как и ожидалось. Но поскольку наличие или отсутствие строк в #t2
не может повлиять на конечный результат для первого запроса, оно полностью исключает выполнение объединения.
Но если это не что-то подобное (и я ожидал бы, что это будет явной разницей в планах запросов) <Я @ немного озадачен. </p>