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

Откуда: из колхоза
Сообщений: 74
Добрый вечер.
Написал код на транзакте, состоящий из нескольких запросов и вызовов ХПр.
Время исполнения 14 сек. В рамках моей задачи приемлимо.
Спрятал этот код в хранимую процедуру. И "О чудо из чудес" эта ХП с этим же
кодом исполняется теперь около 5-ти минут. В чем дело?
Спасибо за ответы.
9 авг 04, 02:49    [867447]     Ответить | Цитировать Сообщить модератору
 Re: Почему в хранимой процедуре код исполняется медленнее ...?  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
В том числе и вот поэтому http://www.osp.ru/win2000/sql/dialogs/311_1_print.htm
9 авг 04, 06:37    [867472]     Ответить | Цитировать Сообщить модератору
 Re: Почему в хранимой процедуре код исполняется медленнее ...?  [new]
gogo
Member

Откуда: из колхоза
Сообщений: 74
Добрый день.
Непонятно почему для кода на транзакте и для этого же кода но
в хранимой процедуре выполняется разный эксекьютион план?
Ведь код то один и тот же. В коде есть запросы с
выражением WHERE Field_SmallDateTime <= @Variable_SmallDateTime. В случае кода на транзакте выбирается првильный план с использованием индекса по этому полю и выполнение идет 14 секунд, а в случае хранимой процедуры
@Variable_SmallDateTime передается в качестве параметра и при этом почему-то план выполнения другой - с использованием другого индекса - Праймари_кей,
поэтому и выполнение идет 5 минут.
Как заставить СКЛ выполнять код с "правильным эксекьютион план"?
Спасибо за ответы.
ВИЗ РЕКОМПАЙЛ не очень подходит потому что хр.процедура может выполнятся в цикле.
9 авг 04, 16:07    [869120]     Ответить | Цитировать Сообщить модератору
 Re: Почему в хранимой процедуре код исполняется медленнее ...?  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
По-моему, в статье достаточно доходчиво объяснено - почему.
9 авг 04, 16:14    [869143]     Ответить | Цитировать Сообщить модератору
 Re: Почему в хранимой процедуре код исполняется медленнее ...?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
автор
В случае кода на транзакте выбирается првильный план с использованием индекса по этому полю и выполнение идет 14 секунд, а в случае хранимой процедуры
@Variable_SmallDateTime передается в качестве параметра и при этом почему-то план выполнения другой - с использованием другого индекса - Праймари_кей,
поэтому и выполнение идет 5 минут.


Ну, попробуйте явно указать в хинте какой индекс использовать.
9 авг 04, 16:19    [869158]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить