[MS SQL 2000] Разный Execution plan для одного и того же кода.
web page Если план все равно выбирается при каждом запуске разный, в зависимости от данных, то можно попробовать запретить кеширование планов, указав при создании SP опцию WITH RECOMPILE, хз насколько это просадит производительность. Еще разные планы могут выбираться из за того, что заданы отличающиеся наборы опций через SET чототам.
Вот тут товарищ похожую фигню описывает, вроде как объясняет это кешированием однажды выбранного плана выполнения. нет, это не из-за parameter sniffing. Я меняю процедуру, потом запускаю снова и первый же запуск имеет не такой execution plan, как тоже самое, но отдельным запросом.
web page описано, опции совпадают?
Опции сессии точно одинаковые в обоих случаях? Если посмотреть для Query Analyzer с помощью dbcc useroptions, а для хранимки с помощью @@options, например как тут
вставил и в запрос, и в процедуру select @@options. выдаёт одно и то же.
Оставить комментарий
klyv
При выполнении запроса из хранимой процедуры, запрос длится во много раз дольше, чем при выполнении из отдельного запроса.Проблема возникает при добавлении одного JOIN'а. Почему-то при запуске отдельного запроса работает Bookmark lookup, и работает быстро, а в хранимой процедуре - Hash match, после которого Index scan, который и занимает всё время работы.
Не сталкивался ли кто-нибудь с подобной проблемой и не знает ли, как её решить?