外部连接性能
答
一个inner join
将消除行,而outer join
不会。这导致需要处理更多的行。
看看this article,它可以直观地描述连接。请注意,inner join
与左侧和完整outer join
的结果集相差多少。这些照片并不代表每种情况,但它们会让您知道发生了什么。
答
外连接通常会为您提供更多的结果(A*B
而不是WHERE A=B
)。这需要更多时间。
答
一般来说,这是因为数据库引擎必须执行更多的比较操作来缩小结果集。
答
用真实数据进行测试。 这可能是,除非外连接引入额外的行,性能是相同的。
答
我有性能问题,即时我的网站,发现查询用7秒钟完成
在此查询中的所有列均数和被索引(SQL Server 2008 R2中)
这全外加入的是3个表格,每个表格有150,350和270行。
我简单地更换了FULL OUTER JOIN为LEFT JOIN和执行时间减少为0秒(毫秒)
我只是用几行 然后测试之前,如果表有成千上万的记录,表现一个完整的外连接将不太好。
答
有些时候,连接执行速度比内部连接快。这将取决于应该加入的2个结果集
外连接通常不会给您乘以B作为结果数,因为它不是联合。它会给你A或B中的记录数量作为结果,这取决于哪一个是这两者中的主要选择。外连接仅意味着当连接表中没有对应的记录时,您需要主选定表上的所有记录和连接表的列中的空值。只有在您可以执行“完整”外连接时才会发生A * B:将左外连接和右外连接组合在一起。 – 2010-08-12 14:22:16
@Marjan,如果它是'FULL OUTER JOIN'呢? – 2010-08-12 14:24:45
@Abe:我刚刚意识到这一点并编辑了我的评论......(无法删除它们......) – 2010-08-12 14:25:55