Показать сообщение отдельно
Старый 29.06.2008, 21:47   #5  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,893 / 5650 (194) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от Wamr Посмотреть сообщение
Не согласен с данным утверждением. При первом вызове такого запроса статистика используется и строится корректный план исполнения, а вот при повторном использовании план сохраняется, что и может приводить к подобным эффектам.
Например, сначала вы искали проводки по партии (использовался индекс по партиям), а потом стали искать по ГТД (и опять используется индекс по партиям).

а с этим согласен
Угу. Это вроде бы как раз в MS SQL 2005 появилось. План строится при первой подстановке значений в параметры, а не при компиляции исходного запроса. И обычно вот такое вот поведение из серии "обычно нормально работает но иногда ни с того ни с сего тормозит" и объясняется тем, что при первом исполнении были какие-то сильно нетипичные значения параметров подставлены. Просто я обычно при рассказе о пользе forceLiterals про это ленюсь рассказывать Вообще - когда такие вопросы задают, почти всегда в ветке появляется масса доброхотов с советами построить какие-нить магические индексы, подставить хинт, постучать по дереву, покропить сервер куриной кровью и тп А про то что SQL Server не такой уж тупой сам по себе и кривой план на простых запросах строит не от дурости, а по каким-то внешним причинам никто не задумывается...

Последний раз редактировалось fed; 29.06.2008 в 21:51.