Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 непонятные тормоза запроса - в зависимости от даты  [new]
vvv40
Member

Откуда:
Сообщений: 23
Есть таблица: изделия, их параметры, дата изготовления - ничего хитрого.
Есть несложный запрос к таблице (500 тыс. записей)
с 15 join'ами к справочникам. В условиях отбора - диапазон дат.
Все нормально выполняется за 2...3 сек.
Но если задаем даты с 18.08 по 18.08 (или позже) время выполнения
увеличивается до 2...3 мин.
т.е. с 01.01 по 31.12 - 2 сек
с 18.08 по 18.08 - 2 мин.
При этом изменяется и план выполнения.
Количество изделий за каждый день примерно одинаково.
Проблема именно с конкретной датой (18.08).
Допрос админов/пользователей, "осмотр" базы ничего не дал.

Как временное решения прописал запрос:
SELECT TOP 1 мой_запрос WHERE диапазон_дат
UNION
SELECT мой_запрос WHERE диапазон_дат
выполняется быстро, те же 2 сек.
Можно наверное руками план запроса прописать.

Подскажите, на что можно грешить и куда копать ?
1 сен 09, 11:57    [7602181]     Ответить | Цитировать Сообщить модератору
 Re: непонятные тормоза запроса - в зависимости от даты  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
vvv40
Но если задаем даты с 18.08 по 18.08 (или позже) время выполнения
увеличивается до 2...3 мин.
т.е. с 01.01 по 31.12 - 2 сек
с 18.08 по 18.08 - 2 мин.
При этом изменяется и план выполнения.
Вы забыли показать, как именно меняется план
А также желательно сам запрос увидеть
1 сен 09, 12:02    [7602227]     Ответить | Цитировать Сообщить модератору
 Re: непонятные тормоза запроса - в зависимости от даты  [new]
aleks2
Guest
vvv40,

>>При этом изменяется и план выполнения.

Значит статистика кривая и оптимизатор выбирает другой план.
1 сен 09, 12:09    [7602272]     Ответить | Цитировать Сообщить модератору
 Re: непонятные тормоза запроса - в зависимости от даты  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 21493
C датами вообще иногда всякие странности происходят.

Мне из 400-тысячной таблицы требовалось выбрать небольшой диапазон дат.
После разного долгого колдовства с планами и хинтами, самым оптимальным вариантом оказалось вытащить ID, соответствующий начальной дате и конечной дате и потом выбирать диапазон между ID-ами.


Ну это правда при условии, что ID инкрементируются и даты пишутся строго по возрастанию (типа лога)
1 сен 09, 16:34    [7604413]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить