HashTableScan は、ハッシュ・ジョインの構築側をイン・メモリ・テーブルのようにスキャンします。これを使用して、次の 1 番目の構造を持つプランを、2 番目の構造のプランに変換できます。idx
は、ハッシュ・テーブル内に格納されているジョイン・キー値の調査に使用できるインデックスです。
table1<seq>*JH ( <operator>... ( table2<seq> ) )
table1<seq>*JF ( <operator>... ( HTS JNB table2<idx> ) )
ハッシュ・ジョインとスキャンの間で演算子が使用されると、ハッシュ・テーブル・スキャンによって、他の演算子による処理が必要なローの数が減ります。この方式は、たとえば、構築側のローの数がインデックスのカーディナリティと比べて小さい場合など、インデックス調査で選択性が高い場合に最も便利です。
ハッシュ・ジョインの構築側が大きい場合、通常の逐次スキャンの方が効果的です。
オプティマイザは、ハッシュ・ジョイン代替実行に対するしきい値の計算と同様の方法でしきい値の構築サイズを計算します。構築側のローの数がこのしきい値を超えると、HashTableScan が中止され、実行中に (HTS JNB table<idx>)
が逐次スキャン (table<seq>)
として処理されます。
逐次方式は、ハッシュ・テーブルの構築側がディスクに溢れるような場合に使用します。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |