我无法理解不同的连接算法(嵌套循环连接,合并连接,索引连接,散列连接和其他变体)以及如何/何时使用它们。更具体地讲,我一直在问画出查询树下面的查询的最高效的执行:查询优化 - 连接算法
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'条款。 –