JOINS和SUBQUERIES有什么区别?我们可以用连接做任何事情也可以用子查询完成,反之亦然?

时间:2011-10-09 18:25:18

标签: sql database oracle

  

可能重复:
  SQL: Join vs. subquery

我们可以使用连接但不能使用子查询,反之亦然吗?

2 个答案:

答案 0 :(得分:2)

在大多数使用企业应用程序的情况下,问题不仅仅是因为可以做某事,而是如何完成。一般来说,连接比子查询更快,更便宜。关于此主题的其他帖子在SO上。这是一个:Join vs. sub-query

答案 1 :(得分:1)

坦率地说,我无法想到一种情况,即从任何一种方法(子查询或连接)都无法实现。

对我来说,更多的是可读性和性能。例如,子查询可能较慢,而联接可能会利用某些索引。至少从DBMS的角度来看,我想,在分析表达式时应该更容易优化连接。

例如,考虑表示为子查询的多个连接的情况。对大多数人来说,看到表达为LeftRightInner联接的声明会使其更容易理解和维护。我甚至避免使用隐式连接,因为它们隐藏了意图。换句话说,我更喜欢将联接表达为from table a inner join table b on a.id=b.id vs from table a, table b where a.id=b.id.实现联接作为子查询使其更不易读,IMO。