Значение фильтра приводит к сбою запроса - PullRequest
0 голосов
/ 27 января 2011

У нас есть интересный табличный запрос (SQL Server 2008), который завершается с другим значением поля. Кто-нибудь видел это раньше?

Это работает нормально (500 мс)

SELECT ROW_NUMBER() OVER (ORDER BY StatisticNo asc) AS RowId, Statistics.* 
FROM Statistics 
WHERE myear = 2010

Это завершается через долгое время (> 3 минуты)

SELECT ROW_NUMBER() OVER (ORDER BY StatisticNo asc) AS RowId, Statistics.* 
FROM Statistics 
WHERE myear = 2011

Таблица содержит данные как для 2010, так и для 2011 года. Интересно, что она отлично работает и для 2012 года как опция фильтра, которая в настоящее время является пустым набором. Мы проверили на нормализованные проблемы и нет пропущенных или нулевых данных. Поле myear является обязательным числовым значением.

На столе нет открытых или активных замков. Это таблица статистики, которая записывается один раз в день.

Ответы [ 2 ]

2 голосов
/ 31 января 2011

Не могли бы вы выполнить этот запрос:

SELECT  year, COUNT(*)
FROM    statistics
GROUP BY
        year

Если у вас мало записей в 2010 и 2012, но много записей в 2011, тогда это будет совершенно нормально для запросабежать дольше.

2 голосов
/ 27 января 2011

Возможно, у вас есть открытая транзакция, блокирующая строку 2011. Попробуйте использовать подсказку NOLOCK, чтобы подтвердить это.

Если это возвращает результаты без блокировки, вы можете найти спид преступника, снова запустив его без подсказки, а затем просмотрев sys.dm_tran_locks, пока происходит блокировка.

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