Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
RodionD Member Откуда: Сообщений: 209 |
Понадобилось сделать выборку с передачей параметров, написал ХП запустил - как-то долго. Внутри ХП c помощью IF ... ELSE IF выбирается нужный запрос. Создал запрос с самым "тяжелым" вариантом, задекларировал параметры, оставил 1 IF который всегда выполняется. Запустил профайлер получил что-то вроде такого: ХП - Reads: 1 437 037, Duration, ms: 18 442 Запрос - Reads: 189 785, Duration, ms: 1 326 Пробовал перенести ХП в табличную функцию, результат примерно такой же, как и ХП. Откуда такая разница? |
3 апр 14, 12:17 [15826363] Ответить | Цитировать Сообщить модератору |
Knyazev Alexey Member Откуда: Екб -> Мск Сообщений: 10234 Блог |
https://www.sql.ru/articles/mssql/2005/070704techniqueforensuringplanstabilityinsqlserver2000.shtml |
3 апр 14, 12:58 [15826675] Ответить | Цитировать Сообщить модератору |
RodionD Member Откуда: Сообщений: 209 |
Knyazev Alexey, Отличный пост, прочитал, спс за ссылку. Но он к моему случаю не относится, как мне кажется. Параметр который я передаю всего лишь выбирает нужный запрос. А проблема, похоже, в LIKE, которые в запросе используються. Если из этого запроса в СП убрать WHERE (... LIKE @likeparam), то выполнение идет на порядок быстрее! Но опять же, не совсем ясно почему созданный запрос с этим LIKE работает быстро? |
3 апр 14, 13:27 [15826847] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Вы сделали этот вывод на основании сравнения планов выполнения ? |
||
3 апр 14, 13:29 [15826860] Ответить | Цитировать Сообщить модератору |
RodionD Member Откуда: Сообщений: 209 |
Glory, Да, план выполнения предложил мне создать несколько индексов. Создал. Стало значительно лучше. Так же появилась одна странность. Планы выполнения запроса и ХП практически одинаковы, а вот план выполнения табличной функции, аналогичной ХП, состоит всего из пары пунктов, хотя условия, и запросы абсолютно одинаковы. |
3 апр 14, 14:04 [15827134] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |