在SQL Server中,我创建的视图引用了几个应具有相同行数和主键的表,尽管它们之间有不同的列数据(因此需要将它们全部拉到一起)对于这个特殊的观点)。尽管如此,我并不总是乐观。
我知道确保我拥有所需行数的唯一方法是使用左连接(或外连接),但我不确定这样做是否会产生显着的性能成本,如果所以,如何量化它。
不幸的是,改变表是我无法做到的,因为应用程序依赖于它们的结构,所以我使用Views将数据拉到一起,我需要确保我这样做最有效的方式。
答案 0 :(得分:1)
是的,内部和外部联接之间存在性能差异。它们是不同的操作,所以它们有不同的底层算法。这个问题的答案几乎解释了this。
表现差异是否重要是另一个问题。对于总是匹配的数据(因此结果是相同的),我希望左外连接的性能非常类似于内连接,特别是如果数据结构针对查询进行了优化。但是,我的期望并不能保证。如果您真的关心这一点,您应该在您的环境中测试您的查询的两个不同版本。
在所有情况下,此类测试的结果都不能保证结果。他们会帮助您做出有关使用left join
而不是inner join
的费用的明智决定。