MergeJoin は 2 つの入力を読み込みます。このとき、2 つの入力はどちらもジョイン属性で順序付けされています。左側の入力のローごとに、右側の入力のローにソート順にアクセスすることで、一致する右側のローをすべて読み込みます。
入力がまだジョイン属性によって順序付けされていない場合 (以前のマージ・ジョインがあるため、または探索条件を満たすためにインデックスが使用されたためなど)、オプティマイザはソートを追加して正しいロー順を生成します。このソートによってマージ・ジョインにコストが追加されます。
MergeJoin が HashJoin より優れているのは、マージ・ジョインが同じ属性を対象としている場合に、ソートによるコストを複数のジョインに分散できることです。入力のサイズが同じと思われる場合、またはソートによるコストを複数の操作に分散できる場合、オプティマイザは HashJoin より MergeJoin を選択します。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |