выберите без раздела блокировки - PullRequest
1 голос
/ 09 сентября 2011

В нашем приложении есть следующая команда 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

Она работала некоторое время и была очень быстрой, но в последние дни она стала чрезвычайно медленной.Я изменил его на

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

Поэтому я удаляю раздел WITH (NOLOCK).

И он снова стал быстрым.Это имеет какой-то смысл, и я понятия не имею, почему у него такое поведение.Я также волнуюсь, что это снова стало медленным.Может ли кто-нибудь объяснить мне это?

А сервер БД - MS SQL 2008

Спасибо

1 Ответ

0 голосов
/ 09 сентября 2011

Я сравнил планы выполнения, и они совпадают.

Одна вещь пришла мне в голову. Каждую ночь мы проводим реорганизацию индекса (и раз в неделю перестройку индекса). Но после реорганизации индекса мы забыли обновить статистику. Может ли это иметь какую-то связь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...