4つの内部結合を持つT-SQL
クエリがあります。SSMS
でActual Execution Plan
を選択してクエリを実行しました。生成されたプランを確認すると、Sort
オペレーターに警告アイコンが表示されていました。 Sort
演算子でこの警告が出る理由は何ですか?
クエリプランのURL: https://www.brentozar.com/pastetheplan/?id=HJULL9H4N
ソート演算子でこの警告が出る理由は何ですか?
要素のプロパティで警告の説明を確認できます。以下のような情報が表示されるはずです。
オペレーターはtempdbを使用して、実行中にデータを流出しました。
これは、クエリに対して許可されたメモリが、必要なメモリよりも少ないことが判明したことを意味します。これには2つの理由が考えられます。
メモリの付与に関する詳細情報は、クエリプランのSELECT
operationのプロパティウィンドウにあります。
私は完全に新しい答えを書いているわけではありません。そのほとんどは、デニスによるコメントと回答の間でカバーされています。
考えられる2つの理由。 Wrong cardinality estimation
およびLack of memory
。除外する方法を説明しますLack of Memory
。
MemoryGrantInfoの下のMaxQueryMemory(左端の選択ノードを右クリックすると):クエリの実行にメモリが必要な場合の、個々のクエリ許可に使用可能なメモリの最大量(KB)。
したがって、MaxQueryMemoryが要求されたメモリよりも大きい場合は、ソートの警告がメモリ不足によるものではなく、基数の推定が不適切であることを示しています。
について読む価値がある SQLサーバーのメモリ許可について
参照: