2011-09-19 118 views
0

我用來在side select子句中編寫select子句以避免從from子句中加入。但是,我擔心這是一個很好的相關練習,否則會降低數據庫的性能。下面是包含多個表的查詢,但是我用沒有任何聯接語句的嵌套select子句寫了它。請讓我知道如果我犯了什麼錯誤或沒有問題。此時此刻,我正在得到準確的結果。嵌套select子句是否會降低數據庫性能?

SELECT * , 
     (select POrderNo from PurchaseOrderMST POM 
     where POM.POrderID=CET.POrderID)as POrderNo, 
     (select SiteName from SiteTRS ST where ST.SiteID=CET.SiteID)as SiteName, 
     (select ParticularName from ParticularMST PM where 
     PM.ParticularID=CET.ParticularID)as ParticulerName 
FROM ClaimExpenseTRS CET 
WHERE [email protected] 
+0

可能的重複:http://stackoverflow.com/questions/1067016/join-queries-vs-multiple-queries –

回答

2

我會使用連接,因爲這是最好的做法,對查詢優化器會更好。

但是,對於學習只是嘗試使用連接和不使用腳本來執行腳本,並查看查詢計劃和執行時間會發生什麼。通常這會立即回答你的問題。

0

我想你應該加入的確如此。 現在你創建自己的JOIN與where和select語句。

+0

JOIN是非最佳解決方案。並且不推薦 –

+0

爲什麼JOIN不是最優的?這會使上述語句更具可讀性...... –

+0

因此,實現自己的連接語句比構建內容更好? – Max

1

您的解決方案很好。 只要您對每個「合併」表使用1列,並且沒有多個匹配行,就沒有問題。在某些情況下,甚至比加入更好。 (數據庫引擎可以隨時改變連接的方向,如果你不使用技巧來強制給定的方向,這可能會導致性能的驚喜,它被稱爲查詢優化,但只要你真的瞭解你的數據庫,你應該成爲決定查詢應該如何運行的人)。

相關問題