使用 INNER JOIN 有啥好处? [复制]
Posted
技术标签:
【中文标题】使用 INNER JOIN 有啥好处? [复制]【英文标题】:Whats the advantage of using INNER JOIN? [duplicate]使用 INNER JOIN 有什么好处? [复制] 【发布时间】:2015-11-10 14:27:35 【问题描述】:我看到this example:
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers
ON Orders.CustomerID=Customers.CustomerID;
产生与此示例相同的输出:
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders, Customers
WHERE Orders.CustomerID=Customers.CustomerID;
INNER JOIN 命令有什么优势吗?
【问题讨论】:
“INNER JOIN 命令有什么优势吗?”,NO。一种是使用 ANSI-92 SQL 合规性,另一种方法早于 ANSI 标准。如果 RDBMS 引擎同时支持这两种标准,那真的没有区别。编译器应该生成相同的执行计划。我说 should* 因为在某些情况下,外部连接可以使用不同的计划执行。我还没有发现 INNER 连接和更新的 RDBMS 引擎的情况。 ***.com/questions/1018822/… 我想这可能会回答你的问题。谢谢。 【参考方案1】:您之前的示例是标准 ANSI/ISO SQL。您的后一个示例是不推荐使用的 SQL。使用前一种语法(ANSI/ISO),连接标准被清楚地描述;对于后一种(已弃用)语法,连接条件与 where
子句过滤器混合在一起,使事情变得更加难以整理。
对于像您这样的简单查询并不重要,但是当您必须处理更复杂的查询时(尝试混合使用左、右和内连接的 12 或 15 个表!),您就会明白为什么旧语法已弃用。
【讨论】:
我很确定我使用 ANSI-92 语法偶然创建了一些笛卡尔连接。 :)【参考方案2】:INNER JOIN 是为了清楚起见。在第二个示例中使用 WHERE 可能会迷失在更复杂的查询中,从而难以确定表是如何连接的,并且更难以解决问题。
【讨论】:
以上是关于使用 INNER JOIN 有啥好处? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL JOIN 有啥区别? [复制]
INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL JOIN 有啥区别? [复制]