Я читал об подсказке запроса SQL Server 2008 OPTIMIZE FOR UNKNOWN. Я понимаю, как это работает.Сохраненные процедуры и ОПТИМИЗАЦИЯ ДЛЯ НЕИЗВЕСТНОГО
Тем не менее, у меня есть вопрос по поводу , где и , когда использовать его. Он не может быть указан внутри UDF. Он может быть указан внутри хранимой процедуры. Тем не менее, this MSDN блог разместить гласит следующее:
4.Moving запрос в хранимую процедуру можно поместить его в отдельную процедурного контекста и может быть хорошим способ получить это значение, видимую оптимизатора (Примечание: это работает в SQL 2000, а)
это, мне кажется, можно сказать, что любой параметр, передаваемый хранимая процедура будет «нюхал», тем самым помогая SQL Server для составления оптимального плана выполнения. Это подразумевает, что кэшированный план будет пересматриваться/перекомпилироваться (не уверен в этом механизме). Однако это путает, потому что это отрицает всю потребность в OPTIMIZE for UNKNOWN.
Статья MSDN по подсказкам запроса не распространяется на мой вопрос.
Может кто-то ответить на этот вопрос для меня, в идеале указатель на что-то от Microsoft, который очищает это. Благодарю.
Thanks @Ed. Таким образом, SQL Server будет «обнюхивать» параметры при первом выполнении и кэшировать результирующий план, и после этого он не будет нюхать их, сохраняя при этом какое-то условие, по которому он считает, что новый план оправдан.Правильно ли я это понял? – IamIC 2010-12-04 09:51:07