如果表具有匹配的行数和主键,则内连接和左连接之间的区别
Difference between inner join and left join if tables have matching row counts and primary keys
在 SQL 服务器中,我正在创建一个引用多个表的视图,这些表 应该 具有相同的行数和主键,尽管它们之间的列数据不同(因此需要将它们放在一起以获得这个特定的视图)。不过,我并不总是肯定他们这样做。
我知道确保我有我需要的行数的唯一方法是使用左连接(或外连接),但我不确定这样做是否会有显着的性能成本,如果是,如何量化。
不幸的是,我无法更改表格,因为应用程序依赖于它们的结构,所以我正在使用视图将数据放在一起,我需要确保我是以最有效的方式进行。
是的,内部联接和外部联接之间存在性能差异。它们是不同的操作,因此它们具有不同的底层算法。这个问题的答案几乎可以解释 this.
性能差异是否重要是另一个问题。对于始终匹配的数据(因此结果相同),我希望左外连接的性能与内连接非常相似,特别是如果数据结构针对查询进行了优化。但是,我的期望并不能保证。如果您真的关心这个,您应该在您的环境中测试您的数据的两个不同版本的查询。
此类测试的结果不保证在所有情况下的结果。他们竭尽全力让您对使用 left join
而不是 inner join
.
的成本做出明智的决定
在 SQL 服务器中,我正在创建一个引用多个表的视图,这些表 应该 具有相同的行数和主键,尽管它们之间的列数据不同(因此需要将它们放在一起以获得这个特定的视图)。不过,我并不总是肯定他们这样做。
我知道确保我有我需要的行数的唯一方法是使用左连接(或外连接),但我不确定这样做是否会有显着的性能成本,如果是,如何量化。
不幸的是,我无法更改表格,因为应用程序依赖于它们的结构,所以我正在使用视图将数据放在一起,我需要确保我是以最有效的方式进行。
是的,内部联接和外部联接之间存在性能差异。它们是不同的操作,因此它们具有不同的底层算法。这个问题的答案几乎可以解释 this.
性能差异是否重要是另一个问题。对于始终匹配的数据(因此结果相同),我希望左外连接的性能与内连接非常相似,特别是如果数据结构针对查询进行了优化。但是,我的期望并不能保证。如果您真的关心这个,您应该在您的环境中测试您的数据的两个不同版本的查询。
此类测试的结果不保证在所有情况下的结果。他们竭尽全力让您对使用 left join
而不是 inner join
.