2012-11-26 54 views
0

這裏是查詢任何一個可以幫助我重寫以下查詢DB2

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; 

你能PLZ告訴我HW我可以使用第二查詢以有效的方式。

當你在查詢u能找到存在的條件的微小變化。所以對於我們真的需要去兩個查詢n執行UNION ALL ..

我需要調整第二查詢即任何可能的方式來重寫第二個查詢,以獲得良好的性能..任何幫助嗎?

在此先感謝。

+1

你究竟在這裏試圖完成什麼?就個人而言,我寧願重新編寫您刪除「UNION」的查詢,只是調整條件。哦,這兩個不是等價的 - 'UNION'版本正在做'(A AND B)或(C AND D)',而另一個正在做'(A或B)和(C或D)' )。 –

回答

1

我不是在DB2中的專家,但SQL語句通常是相同的

  • UNION ALL回報也重複爲了不返回重複
  • 只使用聯盟
  • 如果不加「()」在工會中它將完成它將按照您編寫的順序完成工會http://msdn.microsoft.com/en-us/library/ms180026.aspx
  • 爲什麼從WEBSS.P0029_LOCATION L中選擇而不使用左連接?我會使用兩個左連接,它是
相關問題