私たちのアプリケーションでは、次のSQLコマンドがあります。ロックなしセクションで選択
SELECT trackerid,taskid,action,sendto, sendtofullname, recfrom, actiontime
FROM [LO].[dbo].[TRACKER] WITH (NOLOCK)
where [EVENTRECORDID] = ? and ACTION in (1,4,5,15,4000,4200)
order by Actiontime
これは時間がかかっていて非常に速かったが、最後の日は極端に極端になった。 私は、だから私は(NOLOCK)WITHセクションを削除
SELECT trackerid,taskid,action,sendto, sendtofullname, recfrom, actiontime
FROM [LO].[dbo].[TRACKER]
where [EVENTRECORDID] = ? and ACTION in (1,4,5,15,4000,4200)
order by Actiontime
にそれを変更しました。
もう一度速くなった。それは私には意味をなさないと私は考えていない、なぜこの動作があります。私はまたそれが再び遅くなることを心配しています。 誰かが私にそれを説明できますか?
そして、DBサーバは、MS SQL 2008で
おかげ
実行計画を比較する必要があります。彼らは同じように見えますか?彼らはどんな見た目ですか?彼らは両方ともスキャンを持っていますか? –
[実行計画](http://stackoverflow.com/questions/7359702/how-do-i-obtain-a-query-execution-plan)を比較してみてください。キャッシュされた計画がクエリを変更すると、新しいプランを使用するようになりました。 – Justin
@Justin - 最初のクエリの最適化ベースの再コンパイルを引き起こす統計が更新された場合。 –