Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL の使用法 » クエリ処理 » クエリの最適化と実行 » クエリ実行アルゴリズム » アルゴリズムの種類 » ジョイン・アルゴリズム

 

HashSemijoin アルゴリズム (JHS)

HashSemijoin は、左側と右側のセミジョインを実行します。右側のローは、結果に表示される左側のローを決定するためだけに使用されます。HashSemijoin では、右側のローを読み込んでイン・メモリ・ハッシュ・テーブルが作成されます。その後、左側の各ローによってこのテーブルが調査されます。一致するローが見つかると左側のローが結果に出力され、左側の次のローについて、再び調査プロセスが開始されます。少なくとも 1 つの等号ジョイン条件がないと、クエリ・オプティマイザは HashSemijoin を考慮しません。NestedLoopsSemijoin と同様に、ジョインとして書き換えられた存在限定 (IN、SOME、ANY、EXISTS) のネストされたクエリのテーブル式がジョインの入力に含まれる場合、HashSemijoin を使用できます。ジョイン条件に不等号が含まれる場合、または右側のインデックス検索を低コストにする適切なインデックスが存在しない場合は、HashSemijoin の方が NestedLoopsSemijoin よりパフォーマンスに優れています。

HashJoin と同様に、操作を完了するのに十分なキャッシュ・メモリがない場合は、HashSemijoin がネスト・ループ・セミジョイン方式に戻ることがあります。この場合は、パフォーマンス・カウンタの値が増分されます。このモニタ値を読むには、QueryLowMemoryStrategy データベースまたは接続プロパティ、または Windows パフォーマンス・モニタの [クエリ:メモリ不足時方式] カウンタを使用します。

HashSemijoin 演算子で使用できるメモリ容量は、サーバのマルチプログラミング・レベルとアクティブな接続の数によって異なります。SQL Anywhere でのスレッドデータベース・サーバのマルチプログラミング・レベルの設定を参照してください。

注意

Windows パフォーマンス・モニタは、Windows Mobile では使用できません。

詳細については、接続プロパティの「QueryLowMemoryStrategy」を参照してください。