2011-10-27 94 views
3

任何一個可以建議哪一個是在這種情況下,更好地:在SQl查詢中哪個更好的子查詢或JOIN?

1:

SELECT 
    COLUMN1, 
     (SELECT 
      COLUMN2 
     FROM 
      TABLE2 
     WHERE 
      <some condition>) AS COLUMN2 
FROM TABLE 1 

2:

SELECT 
    T1.COLUMN1, 
    T2.COLUMN2 
FROM 
    TABLE1 T1 
INNER JOIN 
    TABLE2 T2 ON <some condition> 
+4

更好的查詢是返回所需結果的那個。我猜想可能會出現兩種查詢可以互換的情況,但並不總是這樣。如果您從給定條件的子查詢中獲取多個行,則子查詢版本將失敗。 –

+1

更好的查詢是在較短的時間內返回所需結果的查詢。 –

+1

更好的查詢是使用更少的數據庫資源返回所需結果並且足夠快以滿足您的應用程序需求的查詢。也就是說,Smruti詢問是否最好用子查詢或聯接來解決給定的問題。這個例子並不是很好(或者甚至是非常必要的),但是問題很明顯。 – ObscureRobot

回答

2

哪個更好?

這不是更好的問題,因爲它們是完全不同的查詢。

如果您的子查詢返回多於1行,您的第一個查詢將會出錯。

4

還有的 「更好」 的幾個軸...

  • 更好的性能
  • 更好的可讀性
  • 更好的可維護性
  • 更好的靈活性 ....

    所以,

    1. 測試,並找出(檢查可以相同也可以計劃)
    2. 在旁觀者的眼中,這裏的查詢是等同放着清單,我更喜歡加入
    3. 取決於你的員工
    4. 似乎並不適用於這種情況 ...

更好的是經常只是一個權衡...

+0

+1最後一句「更好是折衷」。 – Emerald214