【问题标题】:1 Outer Join vs Left join following with Right Join1 外连接与左连接跟随右连接
【发布时间】:2015-08-31 14:31:50
【问题描述】:

如果表 A 有 7k 条记录,而表 B 有 5 条记录,则将表 A 作为驱动程序的左外连接将提供 7k 记录,将表 B 作为驱动程序的右外连接将提供 5 条记录。

但据我了解,FULL OUTER JOIN 提供 7k*5 条记录。是总是如此还是随着加入条款的不同而变化?如果总是这样,那么合并表 A 和表 B 之间的数据,让 LEFT OUTER JOIN 结果 UNION ALL 与 Right OUTER JOIN 结果,而不是 FULL OUTER JOIN 不是更好的选择。原谅我的麻木,我很累。:-)

此处显示的数字给出了我们在这些表之间可以拥有的记录的相对变化,并且表 B 将来实际上会增长更多。

【问题讨论】:

    标签: oracle11g left-join outer-join query-performance


    【解决方案1】:

    我认为您所想的FULL OUTER JOIN 实际上是CROSS JOIN,或者笛卡尔连接操作。 CROSS JOIN 确实返回 N*M 记录,其中 N 是左表中的记录数,M 是右表中的记录数。

    FULL OUTER JOIN 不同——它是LEFT JOINRIGHT JOIN 在单个操作中的组合:首先将表连接起来,并返回连接操作产生的每条记录。

    此外,与LEFT JOIN 一样,左侧表中右侧没有匹配的行也将被返回,并为右侧表中的列显示NULL 列,就像@ 987654329@,右侧表中左侧没有匹配的行将被返回,并为左侧表中的列显示NULL 列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-24
      • 2015-01-11
      • 2011-10-01
      • 2020-07-28
      • 1970-01-01
      • 2021-09-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多