在这种情况下,“Left OUTER JOIN”优于“NOT IN”查询,在哪种情况下“NOT IN”或“NOT EXIST”或“IN”?

时间:2014-05-12 07:04:31

标签: sql sql-server-2008

您可以解释一下我应该在哪里使用外连接以及我应该在哪里使用NOT IN或NOT EXIST查询。

在哪种情况下哪一个更好?

3 个答案:

答案 0 :(得分:1)

一般来说,如果适用EXISTS或NOT EXISTS,请使用它。他们是半连接。它会在找到第一个匹配或不匹配的行时立即返回结果,然后它会丢弃刚找到的内容。

通过语法说哪个更好是没有意义的。 SQL Server数据引擎优化器将决定实际的执行计划。相同的查询可能会生成完全相同的执行计划。如果您不确定哪个更好,请检查您的实际执行计划。

答案 1 :(得分:0)

当我们需要通过连接来获取来自不同表的数据时,我们可以使用连接。

我们可以在where子句中使用 IN,NOT IN或NOT exists 来根据我们的要求过滤我们的数据。

请参阅这些链接以获取更多信息..

http://www.w3schools.com/sql/sql_join.asp

http://www.w3schools.com/sql/sql_in.asp

NOT IN vs NOT EXISTS

答案 2 :(得分:0)

对于等效查询,SQL服务器通常不存在比其他服务器更快。但是,使用左连接时,您可能无法执行等效查询。当您需要来自两个表的一些数据时,也会使用左连接。例如,您有一个User表和一个Address表,但并非所有用户都有地址。因此,您使用左连接来获取您拥有的地址,并使用空值来获取您没有的地址。你不能在不存在或不存在的情况下这样做,所以左边的连接是你唯一的选择。