2011-09-09 3 views
1

私たちのアプリケーションでは、次の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で

おかげ

+0

実行計画を比較する必要があります。彼らは同じように見えますか?彼らはどんな見た目ですか?彼らは両方ともスキャンを持っていますか? –

+0

[実行計画](http://stackoverflow.com/questions/7359702/how-do-i-obtain-a-query-execution-plan)を比較してみてください。キャッシュされた計画がクエリを変更すると、新しいプランを使用するようになりました。 – Justin

+0

@Justin - 最初のクエリの最適化ベースの再コンパイルを引き起こす統計が更新された場合。 –

答えて

0

私は、実行計画を比較して、彼らは同じです。

1つのことが私の頭に浮かんだ。毎晩、私たちはインデックスの再編成(そして一週間に1回のインデックスの再構築)を実行します。しかし、インデックスの再編成後、統計の更新は忘れてしまいました。それはいくつかの接続がありますか?

+0

あなたはOPですか?その場合、両方のアカウントをマージできるように、メールアドレスを他のアカウントと同じに更新できますか?これを実行したら、これを報告してください。ありがとう。 – Kev

+0

Dodgyの統計情報は両方のバージョンのクエリに影響します。プランを見ると、これらのクエリにはパラメータで置き換えられたリテラル値がありますか? –

+0

申し訳ありませんKev、OPは何ですか? – iaragorn

関連する問題