• 締切済み

ハッシュ結合について

ハッシュ結合について (1)駆動表のサイズを調べる方法はあるのでしょうか? ハッシュ結合は駆動表の大きさがhash_area_size以下の場合有効(処理速度が速い)とあったのですが… (2)また、条件が等価結合の場合とあったのですが WHERE t1.YMD = t2.YMD AND t1.srv_cd = t2.srv_cd AND t1.no < t2.no のような場合どうなるのですか? 等価部分の条件までで作成されるのか、等価条件以外が入ってしまっているので作成されないのか… 本やネットで調べてみたのですがわかりませんでした(調べ方が悪いだけかもしれませんが)。どなたかお願いしますm(_ _)m

みんなの回答

  • entree
  • ベストアンサー率55% (405/735)
回答No.1

>(1)駆動表のサイズを調べる方法はあるのでしょうか? >ハッシュ結合は駆動表の大きさがhash_area_size以下の場合有効(処理速度が速い)と >あったのですが… ないと思います。 でも、実行計画ありきなら、机上計算である程度の値は算出できると思いますが。 (その労力がどれだけ報われるかは分かりませんが) あと、OLTPであればハッシュ結合よりもNL結合が選択されるように 索引定義を検討することが最優先だと思います。 (ハッシュ結合が行われる索引を有効活用できないケースが多いので) >(2)また、条件が等価結合の場合とあったのですが >WHERE t1.YMD = t2.YMD >AND t1.srv_cd = t2.srv_cd >AND t1.no < t2.no >のような場合どうなるのですか? >等価部分の条件までで作成されるのか、等価条件以外が入ってしまっているので >作成されないのか… 等価部分の条件までで作成されるでしょう。 ただし、その結果他の結合方式の方が有利であればそちらが選択されるでしょう。