连接表或从多个表中选择

时间:2013-01-23 09:26:52

标签: sql database oracle join oracle10g

加入表从多个表中选择之间哪个更好?

例如,让我们假设以下类似的情况:

使用 加入

SELECT COALESCE(SUM(SALARY),0) FROM X
JOIN Y ON X.X_ID=Y.Y_X_ID

通过 从多个表中进行选择

SELECT COALESCE(SUM(SALARY),0) FROM X, Y
WHERE X.X_ID=Y.Y_X_ID

3 个答案:

答案 0 :(得分:2)

主要是join用于从多个表中检索数据 所以在sql中有3种类型的连接可用

  1. Equi join-inner join         外连接 - 左                    对                    完整
  2. Non equi join
  3. 自我加入
  4. 交叉加入

答案 1 :(得分:1)

您应该使用 JOIN 语法,原因很多,可以找到here

此外,这种语法的优点是可以为查询优化器提供一些提示(在计算权重期间,由此语法中提到的事实直接计算的权重比其他权重更有利)。

答案 2 :(得分:1)

两者都是连接。第一个是显式连接,第二个是隐式连接,是一个SQL反模式。

第二个是坏的,因为很容易发生偶然的交叉连接。这也是不好的,因为当你想要一个交叉连接时,不清楚你是否想要它或者你是否有意外的连接。

此外,在第二种样式中,如果您需要转换为外部联接,则需要更改查询中的所有联接或冒险获得不正确的结果。所以第二种风格难以维持。

Explcit联接是在上个世纪被设定的,为什么任何人仍然使用容易出错且难以维护隐式联接超出我的范围。