我無法理解不同的連接算法(嵌套循環連接,合併連接,索引連接,散列連接和其他變體)以及如何/何時使用它們。更具體地講,我一直在問畫出查詢樹下面的查詢的最高效的執行:查詢優化 - 連接算法
SELECT E.Name
FROM Employee E, Department D, Works_On W, Project P
WHERE E.DNO = D.DNO and E.SSN = W.ESSN and P.PNUM = W.PNUM and
P.Budget > 50 and E.Sex = 'M' and E.Hobby = 'Yodeling' and
D.DName = 'Rational Mechanics';
我可以提供的模式,如果它需要;基本上,四個表都
員工(SSN,姓名,DNO - 部門數,工資,性別),
部(DNO,DNAME,預算,位置,MGRSSN),
Works_On(ESSN,PNUM - 項目編號),
項目(PNum,PName,預算,位置,目標)。
我畫了一個左深連接樹,我不知道每個連接使用哪個算法。 如果我可以解釋何時使用每種算法或解釋它的資源指針,那將是非常有用的。
編輯:我不是問如何在sql中指定不同的連接,只關於一般的連接。此外,我沒有被告知任何表格都被索引,但我被告知我可以索引來做索引加入。我還給出了啓發式查詢樹的統計數據,我用它來構造樹的結構。
我不完全明白你的問題。你只是想了解不同的連接方法,或者你想學習如何強制給定的SQL引擎使用更好/更有效的連接方法,或者你是否必須編寫自己的查詢引擎?順便說一句,你應該將可用的索引添加到模式中,因爲它對最終結果影響很大。或者也許我是一架直升機。 – biziclop
MSDN是這個信息的好資源。 http://technet.microsoft.com/en-us/library/ms191426(v=sql.105).aspx – Zeph
您可以通過使用適當的連接語法開始學習連接,而不是隱式連接,條件爲'where'條款。 –