2

環境: Windows 2008 R2、SQL Server 2008 SP1

問題: 9 つのテーブルを含むテーブル内部結合クエリは、実際の実行計画で「ステートメントの早期終了の理由: タイムアウト」を取得します。

間違ったメモリ許可が割り当てられています。

ソートは、RAM が十分にあるにもかかわらず、RAM ではなく tempdb で行われました。

tempdb で並べ替えが行われると、パフォーマンスが低下します。

考慮事項: 9 つのテーブルの 1 つからインデックスの 1 つを削除、作成、および削除すると、クエリは再び完全に最適化され、並べ替えは RAM で完全なパフォーマンスで行われます。ただし、クエリを少し変更するとすぐに、完全な最適化が再び失われます。

質問: 以前にその問題を見た人はいますか?

「タイムアウト」が発生する理由に関する詳細情報を取得する方法はありますか?

オプティマイザーは実際に何をしているのですか?

クエリオプティマイザーの問題を承認する方法がない場合は、tempdb 用の ramdisk を作成することを検討します。tempdb に ramdisk を使用するリスクは何ですか?

私がすでに試したこと: UPDATE STATS ON {ALL 9 Tables} WITH FULLSCAN

INDEX REBUILD は、上で行った DROP CREATE DROP アクションのように一時的に機能します。

4

2 に答える 2

0

インデックスが断片化している可能性があります。これは、9 つ​​のテーブルを頻繁に挿入/削除/更新している場合に発生する可能性があります。

インデックスを再構築する例:

ALTER INDEX MyIndex ON MyTable REBUILD

しばらくすると、挿入/削除/更新によってインデックスが再び断片化されます。再構築をスケジュールして、パフォーマンスが低下しないようにすることができます。たとえば、次を参照してください。

http://technet.microsoft.com/en-us/library/ms180074(v=sql.100).aspx

于 2013-11-08T22:19:34.067 に答える