Microsoft SQL Server 2005 に対して単純なselect * from table
クエリを実行しています。テーブルには、PK クラスター化インデックスを持つ約 41000 のレコードがあり、Windows 統合認証を使用しています。
Microsoft SQL Server Management Studio を使用して自分のマシンでこれを実行すると、クエリは約 1 時間 45 分で完了します。グリッドからテキスト出力への切り替えを試み、コマンドラインから実行して、クエリの前に
SQLCMD
ececuting も試しました...クエリの速度は何も変わりませんでした。DBCC USEROPTIONS
DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE
資格情報を使用して同僚のワークステーションから実行すると、クエリはすぐに正常に完了します。同僚が資格情報を使用して私のワークステーションでクエリを実行すると、上記のようにクエリが非常に遅くなります。
この問題のトラブルシューティング方法のアイデアが不足しています。どういうわけか、問題は私のマシンに関連しているように見えますが、それを理解することはできません. 次のことも考慮してください。
- 自分のマシン (Win7-64bit) で ODBC トレースが有効になっていないことを確認しました。Microsoft Management Studio 2008 R2 を使用して SQL Server クライアント ツールをインストールしました。これは、データベースのクエリに使用しているものです。
- また、VS2010 を使用して同じ SQL クエリを実行しましたが、結果は同じです。
- 同じテーブル/データベースのコピーに対してクエリを実行しますが、別のサーバーで問題が解決しません。
- 実行すると
select count(*) from table
、クエリは遅延なく正常に完了します。 - SQL Server プロファイラーでトレースを実行すると、クエリは実行時間の長いクエリに過ぎません。異常は何も表示されません。
- テキスト出力を使用して MS SQL Server Management Studio でクエリを実行すると、約 85 レコードの初期バッファの後に、後続のレコードが一度に約 400 レコードの一括で到着することがわかります。例えば 85 -> 407 -> 804 -> 1210 -> 1605 -> 1897 -> 2161 -> 2753 -> 3051 -> 3342 -> 3676 -> 4002 など。データが到着すると、連続ストリームとして描画されます!?
- また、自分のマシンとクエリが正常に実行されている他のマシンの実際のクエリ実行プランを比較しましたが、それらは同じように見えます。
ここで何がうまくいかないのか、誰かが理解できますか?私のマシンからこれを実行すると非常に遅いのに、別のワークステーションからは正常に実行されるのはなぜですか?... この問題をトラブルシューティングするための推奨されるアクション手順はありますか?
事前にみんなに感謝します!