我最近写它有这部分SQL查询效率 - UNION的影响的所有
select T.Id from Teams T
inner join
(
select SG.Team1Id, SG.Team2Id from SG
union all
select SP.Team1Id, SP.Team2Id from SP
) G
on T.Id in (G.Team1Id, G.Team2Id)
我怀疑这个查询效率
将这个查询从SG
和获取所有记录的存储过程子查询中的SP
然后会应用连接条件吗?如果是的话,那么我认为这是没有效率的
或
的SQL Server是足够聪明,只从两个匹配连接的标准表获取行?
发布查询计划,以便我们可以了解引擎如何执行此查询。 (G.Team1Id,G.Team2Id)中的T.Id上的' – 2013-04-21 18:56:36
''表示您将始终获得嵌套循环连接。它是'T.Id = G.Team1Id或T.Id = G.Team2Id'。参见[在INNER JOIN条件中有一个'OR'是一个坏主意?](http://stackoverflow.com/questions/5901791/is-having-an-or-in-an-inner-join-condition-a -bad-idea/5901901#5901901) – 2013-04-21 19:25:39