こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

ハッシュ結合について

ハッシュ結合について

(1)駆動表のサイズを調べる方法はあるのでしょうか?
ハッシュ結合は駆動表の大きさがhash_area_size以下の場合有効(処理速度が速い)とあったのですが…

(2)また、条件が等価結合の場合とあったのですが
WHERE t1.YMD = t2.YMD
AND t1.srv_cd = t2.srv_cd
AND t1.no < t2.no
のような場合どうなるのですか?
等価部分の条件までで作成されるのか、等価条件以外が入ってしまっているので作成されないのか…

本やネットで調べてみたのですがわかりませんでした(調べ方が悪いだけかもしれませんが)。どなたかお願いしますm(_ _)m

投稿日時 - 2010-06-10 01:57:47

QNo.5957650

困ってます

このQ&Aは役に立ちましたか?

13人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.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
>のような場合どうなるのですか?
>等価部分の条件までで作成されるのか、等価条件以外が入ってしまっているので
>作成されないのか…

等価部分の条件までで作成されるでしょう。
ただし、その結果他の結合方式の方が有利であればそちらが選択されるでしょう。

投稿日時 - 2010-06-11 09:08:26

あなたにオススメの質問