Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 динамический sql b производительность  [new]
кириллk
Member

Откуда:
Сообщений: 1062
Добрый вечер!

Есть запрос:
DECLARE @name varchar(10)='вася'
select * from T1 where t1.name =@name


Если его переписать на

DECLARE @req varchar(100)
DECLARE @name varchar(10)
SET @req = 'select * from T1 where t1.name =' +@name'

exec @req

Я где то читал что при втором варианте могут быть проблемы к обращениям к индексам или наоборот

Может кто сталкивался с изменением производительности при exec?
6 апр 16, 16:53    [19024252]     Ответить | Цитировать Сообщить модератору
 Re: динамический sql b производительность  [new]
iap
Member

Откуда: Москва
Сообщений: 47194
кириллk,

EXEC написан неправильно.
Индексы тут вообще не при чём.
Вопрос в обоснованности применения динамического запроса.
6 апр 16, 16:56    [19024273]     Ответить | Цитировать Сообщить модератору
 Re: динамический sql b производительность  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32167
кириллk
Я где то читал что при втором варианте могут быть проблемы к обращениям к индексам или наоборот
При указании литералов вместо переменных в условиях запроса сервер иногда может построить лучший план.
6 апр 16, 17:54    [19024567]     Ответить | Цитировать Сообщить модератору
 Re: динамический sql b производительность  [new]
Relic Hunter
Member

Откуда: AB
Сообщений: 7670
кириллk,

вы верите в существование статического sql? =)
6 апр 16, 18:14    [19024655]     Ответить | Цитировать Сообщить модератору
 Re: динамический sql b производительность  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
кириллk,

в случае динамики, если будет много 'Васей Петей и пр.' рискуете засрать кеш планов.
в случае "статики", будет один план и есть шанс, что он не всегда будет оптимальным для 'Васей Петей и пр.'
6 апр 16, 18:20    [19024686]     Ответить | Цитировать Сообщить модератору
 Re: динамический sql b производительность  [new]
кириллk
Member

Откуда:
Сообщений: 1062
Понятно... так как лучше то )
10 апр 16, 14:45    [19038823]     Ответить | Цитировать Сообщить модератору
 Re: динамический sql b производительность  [new]
iljy
Member

Откуда:
Сообщений: 8711
кириллk
Понятно... так как лучше то )


Лучше - сесть и вдумчиво осознать, какие плюсы вы хотите получить от динамики. Минусы ее вам сказали (засирание кеша планов, усложнение кода для генерации этой динамики, плюс возможные проблемы с безопасностью). Производительность можно тупо проверить, сравнив планы, ну и время можно замерить, если по планам это неочевидно.
10 апр 16, 15:08    [19038866]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить