Whats the advantage of using INNER JOIN?
我看到这个例子:
1 2 3 4
| SELECT Orders.OrderID , Customers.CustomerName , Orders.OrderDate
FROM Orders
INNER JOIN Customers
ON Orders.CustomerID =Customers.CustomerID ; |
生成与此示例相同的输出:
1 2 3
| SELECT Orders.OrderID , Customers.CustomerName , Orders.OrderDate
FROM Orders , Customers
WHERE Orders.CustomerID =Customers.CustomerID ; |
内部连接命令有什么优势吗?
- "内部联接命令有什么优势吗?"没有。一种方法使用的是符合ANSI-92 SQL,另一种方法早于ANSI标准。如果RDBMS引擎同时支持这两个标准,那就没有区别了;编译器应该生成相同的执行计划。我认为应该*,因为在某些情况下,外部连接可以用不同的计划执行。我还没有发现内部连接和更新的RDBMS引擎的情况。
- stackoverflow.com/questions/1018822/…我想这可能是您问题的答案。谢谢。
前一个示例是标准的ANSI/ISO SQL。后一个示例不推荐使用SQL。前一种语法(ansi/iso)清楚地描述了连接标准;后一种(不推荐使用)语法中,连接标准与where子句过滤器混合在一起,使得排序变得更加困难。
对于像您这样简单的查询来说,这并不重要,但是当您必须处理更复杂的查询时(尝试12或15个表,混合使用左、右和内部联接!),您将理解为什么旧语法被弃用。
- 我很肯定我无意中使用了ansi-92语法创建了一些笛卡尔连接。:)
内部连接是为了清晰起见。在第二个示例中,使用WHERE可能会在更复杂的查询中丢失,从而使确定表的联接方式变得困难,并使解决问题变得更加困难。