次のクエリがあるとします。
select * from A, B, C, D
where A.x = B.x
and B.y = C.y
and A.z = D.z
Ax と Bx と By と Cy と Dz にインデックスがあります
Azにはインデックスがありません
このクエリにヒントを与えて、Ax では INDEX ヒントを使用し、Az では USE_HASH ヒントを使用するにはどうすればよいですか? ヒントは特定の結合ではなくテーブル名のみを取るように思われるため、複数の結合を持つ単一のテーブルを使用する場合、それらすべてに対して単一の戦略しか指定できません。
別の方法として、上記のクエリで LEADING または ORDERED ヒントを使用しているとします。これらのヒントはどちらもテーブル名のみを使用するため、Ax = Bx 結合が Az = Dz 結合の前に確実に行われるようにするにはどうすればよいでしょうか? この場合、D を最初にリストすることができますが、D がその後 E に結合し、DE 結合がクエリ全体で必要な最後の結合であると想像してください。
3 番目の構成 -- Ax 結合をクエリ全体の最初にし、Az 結合を最後にしたいとします。ヒントを使用して、A からの単一の結合を実行し、その後に BC 結合を実行し、最後に AD 結合を実行するにはどうすればよいですか?