почти в во всех случаях комментарии являются злыми: http://gooddeveloper.wordpress.com/
Эта нотация позволяет повторно использовать скомпилированный во время выполнения оператор TSQL с другими параметрами; то есть инструкция компилируется только один раз, что повышает эффективность.
Это, по крайней мере частично, для повторного использования плана запроса. Он может поместить параметры в строку, что означает, что каждый раз, когда вы запускаете запрос с разными параметрами, анализатор видит его как другой запрос и повторно анализирует его. Но поскольку он выполняется таким образом, план запроса кэшируется, и он может просто вставлять новые переменные каждый раз, когда вы его запускаете.
РЕДАКТИРОВАТЬ, ой, я сказал, что параметризация вместо замены параметров, спасибо stephbu
sp_executesql предпочтительнее выполнения, потому что он поддерживает подстановку параметров и имеет тенденцию работать более эффективно.
Следует отметить, что он также обеспечивает защиту от SQL-инъекций из-за параметризации. Не могу пожаловаться на этот ...
Это отличный вопрос.
Это не совсем ответ, а исследование рассуждений, уже приведенных в других ответах. Не стесняйтесь обновить этот «ответ»
Очевидным ответом было бы « параметризованный кеш запросов
». Однако параметры могут быть так же легко связаны, когда оператор выполняется напрямую , а все еще кэшируется.
Синтаксис и подробности в этой статье MSDN ...
Заявления о производительности Я сомневаюсь в отсутствии данных, так как кэш, похоже, одинаков как для прямых запросов, так и для запросов sp_execsql.
Итак, если не те - что это?