我有2個表中有幾個相同的字段需要鏈接JOIN條件。例如。在每個表中都有字段:P1,P2。我想寫以下連接查詢:INNER JOIN與複雜的條件大大增加了執行時間
SELECT ... FROM Table1
INNER JOIN
Table2
ON Table1.P1 = Table2.P1
OR Table1.P2 = Table2.P2
OR Table1.P1 = Table2.P2
OR Table1.P2 = Table2.P1
在這種情況下我有這樣的要求被執行了大量的時間巨大的表。
我試圖測試多長時間只有一個條件的查詢請求。首先,我已經用這種方式修改了表中的所有數據,其中P2 &P1被複製爲表1 &表2中的新行。所以我的查詢很簡單:
SELECT ... FROM Table1 INNER JOIN Table2 ON Table1.P = Table2.P
其結果是更多然後驚訝:從多個小時(第一種情況下)的執行時間減少到2-3秒!
爲什麼它如此不同?這是否意味着複雜的條件總是會降低性能?我怎樣才能改善這個問題?可能是P1,P2索引會有幫助嗎?我想保持第一DB模式,而不是轉移到一個外地P.
那些'OR's連接條件應該是'AND'還是那個故意? – Vikdor
從外觀上看,這是故意的。匹配是Table1的P1或P2等於table2的P1或P2 – DarK
可能的重複[在INNER JOIN條件中有'OR'是一個壞主意?](http://stackoverflow.com/questions/5901791/is-having -an-or-in-an-inner-join-condition-a-bad-idea) –