「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次  †
概要  †
SQL Serverでは、結合方法を
から選択できる。
特徴  †
三つのアルゴリズムは,一般的に
ネスト・ループ結合 < マージ結合 < ハッシュ結合
の順で高速(ハッシュ結合が最速)。
ただし、以下のケースでは、必ずしもこの順番にならない。
- 二つのテーブルのレコードの数が極端に違う場合
 
- 両方のレコードの数が十分小さいとき
 
- 検索条件に合致した1レコードを早く返したい
 
ネスト化ループ結合  †
- 単純に二重ループを回してテーブルを結合する方法
 
- インデックスが設定されていない小さなテーブルと
インデックスが設定されている大きなテーブルの二つを結合する場合に効果的 
マージ結合  †
- 二つのテーブルの結合フィールドをあらかじめソート。
 
- ソート結果の結合フィールドのポインタを上から下へと順に走査。
 
- これによって、レコードの走査が1回で済む。
 
ハッシュ結合  †
- ハッシュ結合は高速だが、
- ハッシュ テーブルを作成するため、
 
- 元のテーブルのサイズが大きい場合、
ハッシュ テーブルがメモリを大量に消費することがある。 
 
監視方法  †
この場合、パフォーマンス カウンタを使用して監視を行う。
この場合、
- SQL Server:Buffer Manager:Free pages
 
のカウンタ値が低く、
- SQL Server:Buffer Manager:Stolen Page Count
 
- SQL Server:Buffer Manager:Memory Grants Pending
 
のカウンタ値が高いという状態になる。
対策方法  †
この状態では、SQL Serverのメモリ不足が発生する可能性がある。
この場合、
- 「ネスト化ループ結合」に変更できる
 
- 「ハッシュ結合」を使用している
 
クエリを探すことに重点を置く。
結合方法の見分けるには、実行プランを確認する。
参考  †
詳細は、以下のURLを参照のこと。
Tags: :データアクセス, :SQL Server, :障害対応, :性能