Join 左联接能比内联接快吗?

Join 左联接能比内联接快吗?,join,left-join,database-administration,netezza,Join,Left Join,Database Administration,Netezza,查询: VS 左联接能比内联接快吗?在我的例子中,由于某种原因,我看到左连接更快 注:所有表格均为随机分布 当我查看执行计划时,两者之间的区别在于在交叉引用表上添加了分布 左连接: SELECT * FROM TABLE1 TBL LEFT JOIN CROSS_REF_TABLE XREF ON TBL.COL = XREF.COL WHERE XREF.COL IS NOT NULL 内部联接: Node 32. [SPU Sequential Scan table "CROSS_RE

查询:

VS

左联接能比内联接快吗?在我的例子中,由于某种原因,我看到左连接更快

注:所有表格均为随机分布

当我查看执行计划时,两者之间的区别在于在交叉引用表上添加了分布

左连接:

SELECT * FROM TABLE1 TBL
LEFT JOIN CROSS_REF_TABLE XREF
ON TBL.COL = XREF.COL
WHERE XREF.COL IS NOT NULL
内部联接:

Node 32.
  [SPU Sequential Scan table "CROSS_REF_TABLE XREF" as "XREF" {}]
      -- Estimated Rows = 129044, Width = 18, Cost = 0.0 .. 0.2, Conf = 100.0
      Projections:
        1:XREF.ORG_SK  2:XREF.COL
  [SPU Distribute on {(XREF.COL)}]
  [HashIt for Join] 

Netezza LEFT JOIN是嵌套循环还是散列联接?

尽管在某些情况下可能是这样,但标头中的语句过于简化,并且表明了仅存在有限相关性的因果关系

如果您将主题改为“在现实生活中是否会发生内部连接和左侧连接在速度上不相等,即使它们在结果上相等”,所有答案都将是“是”


SQL中有数百个这样的例子(=对>=当然,它选择的联接操作将基于估计的行数,而不是左联接或内联接的选择。您问题中的两个查询都是相同的,并且使用的是外部联接,因为内联接和左联接返回两个不同的结果。主要问题应该是:我需要什么结果?问题不在于结果是什么是的,我们可以通过在where中添加额外的条件来实现我们想要的
Node 32.
  [SPU Sequential Scan table "CROSS_REF_TABLE XREF" as "XREF" {}]
      -- Estimated Rows = 129044, Width = 18, Cost = 0.0 .. 0.2, Conf = 100.0
      Projections:
        1:XREF.ORG_SK  2:XREF.COL
  [SPU Distribute on {(XREF.COL)}]
  [HashIt for Join] 
Node 3.
  [SPU Sequential Scan table "CROSS_REF_TABLE XREF" as "XREF" {}]
      -- Estimated Rows = 129044, Width = 18, Cost = 0.0 .. 0.4, Conf = 100.0
      Projections:
        1:XREF.ORG_SK  2:XREF.COL
  [HashIt for Join]