我正在尝试像这样实现有条件的加入
declare @JoinWithT2 bit = 1;
select T1.* from T1
inner join T2 on (@JoinWithT2 = 0 or T1.Id=T2.Id)
这很好用,当我传递@JoinWithT2
值 1 时,它使用两个表的连接给我结果,当我传递@JoinWithT2
值 0 时,它返回 T1 忽略连接的所有结果。
这一切都很好,但我担心性能,因为上面也可以这样实现
if @JoinWithT2=0
begin
select T1.* from T1
end
else
begin
select T1.* from T1
inner join T2 on (T1.Id=T2.Id)
end
实现条件连接的最佳方法是第一个还是第二个?
我个人觉得第二个应该更好的性能,因为它根本不涉及 T2 而第一个查询可能使用 T2