さまざまな結合アルゴリズム(ネストループ結合、マージ結合、インデックス結合、ハッシュ結合、およびその他のバリエーション)と、それらをいつどのように使用するかを理解するのに問題があります。具体的には、次のクエリを最も効率的に実行するためのクエリツリーを作成するように依頼されました。
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';
必要に応じてスキーマを提供できます。基本的に、4つのテーブルは
従業員(SSN、名前、DNO-部門番号、給与、性別)、
部門(DNO、DName、予算、場所、MGRSSN)、
Works_On(ESSN、PN-プロジェクト番号)、
プロジェクト(PN、PName、予算、場所、目標) )。
左の深い結合ツリーを描画しましたが、各結合にどのアルゴリズムを使用するかわかりません。各アルゴリズムをいつ使用するかについての説明、またはそれを説明するリソースへのポインターを入手できれば、それは非常に役立ちます。
編集:SQLでさまざまな結合を指定する方法については質問していませんが、一般的な結合についてのみ質問しています。また、どのテーブルにもインデックスが付けられているとは言われませんでしたが、インデックス結合を行うだけでインデックスを付けることができると言われました。また、ツリーの構造を作成するために使用した、ヒューリスティックにクエリツリーを作成するための統計も提供されました。