Performance

從子查詢中聯合還是結合兩個外部查詢更有效?

  • August 18, 2015

我搜尋了這個,但找不到我需要的回复。所以我很抱歉,如果這已經被問到了。

我問的是,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

如果您被限制這樣做,那麼您需要與您的環境的系統或數據庫管理員交談。

引用自:https://dba.stackexchange.com/questions/111418