Performance
從子查詢中聯合還是結合兩個外部查詢更有效?
我搜尋了這個,但找不到我需要的回复。所以我很抱歉,如果這已經被問到了。
我問的是,
DB2
但我想這通常適用於幾乎任何數據庫。無論如何,假設我在同一個數據庫中有兩個表:
select ID, EMAIL from TBL1 select ID, EMAIL from TBL2
然後我想做的是在這兩個表中搜尋一個欄位。該欄位可以在任一表中。
所以,我嘗試了以下方法:
select ID, EMAIL from TBL1 where EMAIL = 'blah@aol.com' union select ID, EMAIL from TBL2 where EMAIL = 'blah@aol.com'
這行得通。但是是多餘的和醜陋的。
但是,它是否比以下更有效:
select T.* from ( select ID, EMAIL from TBL1 union select ID, EMAIL from TBL2 ) T where T.EMAIL = 'blah@aol.com'
兩者似乎都有效。不幸的是,我沒有任何真正的 DB2 分析工具(以及受限訪問),所以我似乎無法確定哪個更好。它們在控制台中的執行速度大致相同,但這不是一個好的指標。
對此的任何提示(或者甚至如何自己描述它)將不勝感激。
當然,這是一個高度簡化的例子。真正的查詢非常龐大,跨越 9-18 個表、數據庫等。
謝謝
編輯
DB2 已打開
iSeries
,我不知道它是什麼版本。我嘗試使用的所有內容都會出錯。我想說它是第 8 版,但我真的不知道。如果有人想告訴我如何提供更多資訊,我會的。我對 DB2 了解不多。
您需要使用 DB2 中的解釋工具來回答這個問題,它高度特定於您正在執行的實際查詢,您無法得到一般性的答案。
IBM i 7.2(和以前的版本)有Visual Explain。
如果您被限制這樣做,那麼您需要與您的環境的系統或數據庫管理員交談。