如果我从两个表中选择相等的字段,那么来自SELECT
的哪个表以及来自JOIN
的哪个表是否重要?
我想我真的对如何最好地加入桌子感兴趣。是否有SELECT FROM
以及JOIN
或哪些不重要的准则?
我正在处理一个连接大约5个表的查询,并且不确定我从哪个表中拉出来以及我加入哪个表。目前我正在使用FROM
表格WHERE
子句来自。LEFT JOIN
我认为这是正确的方法,但任何解释或指导都会很棒!
同样适用于INNER JOIN
,因为我看到的反馈是默认SELECT
a.field1,
a.field2,
a.field3,
b.field1,
b.field2
并不重要。
例如
FROM
a
JOIN
b ON a.field1 = b.field1
WHERE
a.field1 = 'abc'
选择1:
FROM
b
JOIN
a ON b.field1 = a.field1
WHERE
a.field1 = 'abc'
选择2:
{{1}}
答案 0 :(得分:3)
内部连接没有功能差异,但外部连接存在功能差异。 (Does the join order matter in SQL?)
^^描绘原因的好方法是:A和B之间的左外连接与B和A之间的右外连接是相同的。方向对外连接非常重要。实际上,这就是为什么你不必在'left join'或'right join'中说出关键字'outer'的原因,数据库知道你想要一个外连接,否则就没有必要指定方向。
如果您的问题与性能有关,是的,首先指定较小的表并随后加入较大的表(而不是相反的方式)可能会有优势。但是,根据表格的相关性,并不总是可以优化这种方式。
Oracle实例具有LEADING提示,可以用来指示数据库首先从指定的表开始,即使它不是FROM子句中列出的第一个(http://docs.oracle.com/cd/B13789_01/server.101/b10752/hintsref.htm#30459)。