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

Откуда: Москва
Сообщений: 375
Всем добрый день

На днях наткнулся на одну хранимую процедурку, в которой был изменен код. Если вкратце эта процедурка строила список проданных товаров с установленной ценой на данный товар. Цена на один и тот же товар может изменяться в зависимости от различных условий, например условия оплаты поставленного товара, изменения цены товара во времени, дополнительно наложенные скидки и т.д. В предыдущей версии кода эта цена считалась в функции, которая все эти параметры учитывала и возврщала цену единицы данного товара. Потом как я понимаю, была произведена оптимизация данной процедуры (список товаров), в вызов функции был заменен на пересчет стоимости подзапросом. В связи с этим вопрос: в каких случаях так стоит поступать, может есть ссылки на книги или статьи в которых описывается данный прием, а так же "условия" при которых имеет смысл его применять.


P/S Вынести на форум данную хранимую процедуру не могу (коммерческая тайна :) ) Если будет необходимость можно попробовать смоделировать ситуацию. А вообще интересует сам принцип: как понимать когда использовать вызов функции, а когда использовать какие- то еще решения. Наверняка есть какие либо рекомендации....


Заранее спасибо
16 ноя 11, 12:07    [11604550]     Ответить | Цитировать Сообщить модератору
 Re: Вызов функции VS обновление запросом (рекомендации)  [new]
iap
Member

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

если функция скалярная, то её однозначно надо выбросить
16 ноя 11, 12:10    [11604570]     Ответить | Цитировать Сообщить модератору
 Re: Вызов функции VS обновление запросом (рекомендации)  [new]
Алексей
Member

Откуда: Москва
Сообщений: 375
iap,

Да, функция скалярная.
То , что выбросить, понял. Её в общем то и выбросили, заменили запросом. А в каких случаях используется скалярная, а в каких нет есть какие нибудь рекомендации почитать?
16 ноя 11, 12:21    [11604662]     Ответить | Цитировать Сообщить модератору
 Re: Вызов функции VS обновление запросом (рекомендации)  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
iap
если функция скалярная, то её однозначно надо выбросить
Не выбросить, а выбросить или заменить на View / Inline function (parametrized view).
16 ноя 11, 17:12    [11607972]     Ответить | Цитировать Сообщить модератору
 Re: Вызов функции VS обновление запросом (рекомендации)  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Mnior
iap
если функция скалярная, то её однозначно надо выбросить
Не выбросить, а выбросить или заменить на View / Inline function (parametrized view).
Я имел в виду "отказаться от использования в запросе"
16 ноя 11, 17:30    [11608073]     Ответить | Цитировать Сообщить модератору
 Re: Вызов функции VS обновление запросом (рекомендации)  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Алексей
есть какие нибудь рекомендации почитать?
Чтобы небыло недопониманий.
Рекомендация простая - вообще не использовать скалярки.
Если припрёт хотелка, то только детерминированные.
Иначе пиняйте на себя.
16 ноя 11, 19:24    [11608818]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить