Более вероятно, что ваша индексация (или ее отсутствие) вызывает медлительность, чем динамический SQL.
Как выглядит план выполнения? Является ли тот же запрос медленным при выполнении в SSMS? Как насчет того, когда он находится в хранимой процедуре?
Если ваша таблица представляет собой неиндексированную кучу, она будет работать плохо по мере увеличения числа записей - это независимо от запроса, и динамический запрос может действительно работать лучше, поскольку природа таблицы изменяется, поскольку динамический запрос с большей вероятностью пересмотреть план запроса, когда его нет в кеше. Обычно это не проблема (и я бы не классифицировал это как преимущество в разработке динамических запросов), за исключением ранних этапов системы, когда SP не были перекомпилированы, но статистика и планы запросов устарели, но объем данные только что сильно изменились.
Еще не статичный. У меня с динамическим запросом, но он не дает никаких оптимизаций. Если бы я запустил его со статическим запросом, и он дал предложения, повлияет ли их применение на динамический запрос? - Xaisoft (41 мин. Назад)
Да, динамический запрос (EXEC (@sql)), вероятно, не будет анализироваться, если вы не проанализировали файл рабочей нагрузки. - Кейд Ру (33 минуты назад)
Если у вас есть поисковый запрос по нескольким объединенным таблицам, столбцы с индексами должны быть столбцами поиска, а также столбцами первичного ключа / внешнего ключа, но это зависит от количества элементов в разных таблицах. Анализатор настройки должен показать это. - Кейд Ру (22 минуты назад)