OUTER JOIN VS INNER JOIN

问题描述:

我一直认为,内部联接执行比OUTER JOIN更好,但我已经经历了几起案件现在在哪里这根本不是真的...OUTER JOIN VS INNER JOIN

有一天,我在创建用一系列INNER JOINS查询。内连接适用于所有这些连接,因为我只需要在所有连接的表中匹配的行。

我注意到性能非常差(运行查询需要1分钟)。奇怪的是,当我将它们中的一些切换到外部联接时,查询在几秒钟内完成...... 这不是热身或缓存的情况,因为我在两次运行之间重新启动了SQL服务器,并且性能读数为随时间推移一致。

我在两个不同的报告中遇到过这种情况,但共同的主题是通过切换到左加入来改进性能。我为两个报告制作了相同表格的开关。所有JOIN都在ON GUID列上完成

左JOIN给出了相同的行数,因为所有ID都在JOINED表中匹配,所以可以切换,但我很好奇如果任何人有解释。 对此有何建议?

该平台是SQL Server 2008和所有外部连接被留JOINS

+3

这不是一个SQL问题,它是特定于供应商的问题。你应该指出你正在使用哪个DBMS(包括作为标签)。 – paxdiablo 2012-03-30 03:54:40

+0

更新了标签 – TGH 2012-03-30 03:55:54

+0

不,这是一个与关系代数有关的SQL问题。供应商细节可能会影响性能,但是出现这种情况的原因是为什么OP的查询在OUTER JOIN中执行得更好。 – 2012-03-30 03:55:59

内加入快于左连接。

This answer应该给你一些提示。

+0

是的,我想这可能是其他因素干扰特定的查询...我不是一个DBA,但我总是认为OUTER比慢INNER :-) – TGH 2012-03-30 04:01:25