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

Откуда: Оттуда
Сообщений: 30
Вопрос уважаемому сообществу.
Есть процедура с параметрами по умолчанию, например

procedure sample
(
@param_n uniqueidentifier = '00000000-0000-0000-0000-00000000000'
)

будет ли процедура выполнятся быстрее, если
перед запросом проверять, указан параметр или нет, т.е.

select * from [таблица]
WHERE
(
(@param_n = '00000000-0000-0000-0000-00000000000')
OR
(@param_n = [столбец])
)

И как идет последовательность проверки в sql логических условий, слева направо или наоборот? Если хотя бы один параметр не удовлетворяет условию, будет ли sql проверять остальные условия (например как visual basic)?
24 авг 04, 11:30    [903250]     Ответить | Цитировать Сообщить модератору
 Re: Производительность процдур  [new]
Сергей84
Member

Откуда: Мурманск
Сообщений: 27465
Вот тут смотри!
24 авг 04, 11:33    [903267]     Ответить | Цитировать Сообщить модератору
 Re: Производительность процдур  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
автор
select * from [таблица]
WHERE
(
(@param_n = '00000000-0000-0000-0000-00000000000')
OR
(@param_n = [столбец])
)

Условие @param_n = '00000000-0000-0000-0000-00000000000' будет вычислено самым первым и один раз, т.к. в нем не упоминаются поля таблицы, после чего для каждй строки быдет вычисляться (@param_n = [столбец]) or <Вычисленное значение>(упрощенно все, конечно).
24 авг 04, 11:40    [903315]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить