可能重复:
SQL: Join vs. subquery
我们可以使用连接但不能使用子查询,反之亦然吗?
答案 0 :(得分:2)
在大多数使用企业应用程序的情况下,问题不仅仅是因为可以做某事,而是如何完成。一般来说,连接比子查询更快,更便宜。关于此主题的其他帖子在SO上。这是一个:Join vs. sub-query
答案 1 :(得分:1)
坦率地说,我无法想到一种情况,即从任何一种方法(子查询或连接)都无法实现。
对我来说,更多的是可读性和性能。例如,子查询可能较慢,而联接可能会利用某些索引。至少从DBMS的角度来看,我想,在分析表达式时应该更容易优化连接。
例如,考虑表示为子查询的多个连接的情况。对大多数人来说,看到表达为Left
,Right
或Inner
联接的声明会使其更容易理解和维护。我甚至避免使用隐式连接,因为它们隐藏了意图。换句话说,我更喜欢将联接表达为from table a inner join table b on a.id=b.id
vs from table a, table b where a.id=b.id.
实现联接作为子查询使其更不易读,IMO。