Цитата:
Сообщение от
Wamr
Не согласен с данным утверждением. При первом вызове такого запроса статистика используется и строится корректный план исполнения, а вот при повторном использовании план сохраняется, что и может приводить к подобным эффектам.
Например, сначала вы искали проводки по партии (использовался индекс по партиям), а потом стали искать по ГТД (и опять используется индекс по партиям).
а с этим согласен
Угу. Это вроде бы как раз в MS SQL 2005 появилось. План строится при первой подстановке значений в параметры, а не при компиляции исходного запроса. И обычно вот такое вот поведение из серии "обычно нормально работает но иногда ни с того ни с сего тормозит" и объясняется тем, что при первом исполнении были какие-то сильно нетипичные значения параметров подставлены. Просто я обычно при рассказе о пользе forceLiterals про это ленюсь рассказывать

Вообще - когда такие вопросы задают, почти всегда в ветке появляется масса доброхотов с советами построить какие-нить магические индексы, подставить хинт, постучать по дереву, покропить сервер куриной кровью и тп

А про то что SQL Server не такой уж тупой сам по себе и кривой план на простых запросах строит не от дурости, а по каким-то внешним причинам никто не задумывается...