有人能帮我在db2中重写下面的查询吗

有人能帮我在db2中重写下面的查询吗,db2,query-optimization,Db2,Query Optimization,以下是查询 select * FROM WEBSS.P0022_INVENTORY_ACTIVITY_LOG I LEFT OUTER JOIN WEBSS.P0029_LOCATION L2 ON I.INVT_XFER_LOC_ID = L2.LOC_ID, WEBSS.P0029_LOCATION L WHERE I.LOC_ID = L.LOC_ID UNION ALL select * FROM WEBSS.P0022_INVENTORY_ACTIVITY_LOG I LEF

以下是查询

select *
FROM 
WEBSS.P0022_INVENTORY_ACTIVITY_LOG I LEFT OUTER JOIN WEBSS.P0029_LOCATION L2 ON I.INVT_XFER_LOC_ID = L2.LOC_ID,
WEBSS.P0029_LOCATION L
WHERE 
I.LOC_ID = L.LOC_ID 
UNION ALL 
select *
FROM 
WEBSS.P0022_INVENTORY_ACTIVITY_LOG I LEFT OUTER JOIN WEBSS.P0029_LOCATION L2 ON I.LOC_ID = L2.LOC_ID,
WEBSS.P0029_LOCATION L
WHERE 
I.INVT_XFER_LOC_ID = L.LOC_ID; 
你能告诉我我能有效地使用第二个查询吗

当你查看查询时,你会发现条件有一点变化。。因此,我们真的需要用union all进行两个查询

我需要调整第二个查询,即任何可能的方法重写第二个查询以获得良好的性能。。有什么帮助吗


提前感谢。

我不是db2方面的专家,但sql语句通常是相同的

  • UNION ALL返回值也重复
  • 仅使用Union,以免返回重复项
  • 如果不在联合中添加“()”,它将完成,它将按照您编写联合的顺序执行联合
  • 为什么从WEBSS.P0029_位置L中选择,而不同时使用左连接?我会使用两个左连接,是吗

您在这里到底想实现什么?就我个人而言,我宁愿重新编写您给出的查询以删除
联合
,而只是调整条件。哦,这两个是不等价的,
UNION
版本执行
(A和B)或(C和D)
,而另一个版本执行
(A或B)和(C或D)
(大致)。