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

Откуда:
Сообщений: 90
Добрый вечер всем!
Хочу спросить у знатоков SQL server..

Делаю запрос по БД. Запрос с несколькими Left Join, на выходе получаю табличку с первичными данными.
Теперь нужно обработать эту таблицу и на полученных полях выполнить некоторые вычисления.
В результате полей станет раза в два -три больше.

эти вычисления можно сделать и с помощью агрегатных функций БД (с использованием проверок isnull), и передать уже готовые данные,
и в клиентском приложении, по первичным данным, полученным из БД от основого запроса.
(БД и клиент - физически на одной машине.)

Вопрос - вычисления стоит выполнять в БД или в клиентском приложении?
Какие есть аргументы того и другого способа?
Лично мне кажется, что скорость вычисления агрегатных функций БД выше (имхо),
но не очень удобно на sql писать логику вычисления полей, я бы перенес ее в c#..
19 мар 17, 17:30    [20311006]     Ответить | Цитировать Сообщить модератору
 Re: Вычисления по полям и передача клиенту.  [new]
s_ustinov
Member

Откуда: Munchen, DE
Сообщений: 2202
Arl,
В общем случае удобнее получать из БД уже готовые данные. Так меньше проблем в дальнейшем. Если надо что-то поменять, то меняете только в одном месте (SQL запрос), а не в двух местах (SQL запрос + модуль расчетов на C#).

Ни и скорость может отличаться на порядки (например, переписывал выгрузку в ексель для клиентов цен с учетом индивидуальных скидок и наличия товаров). Не успевали до утра все ексели сфоромироваться... Выгрузка после переписывания заработала примерно в 250 раз быстрее.

Но без конкретного примера это обсуждения сферического коня. В некоторых случаях лучше расчеты делать не в БД.
19 мар 17, 18:19    [20311115]     Ответить | Цитировать Сообщить модератору
 Re: Вычисления по полям и передача клиенту.  [new]
Arl
Member

Откуда:
Сообщений: 90
Спасибо, буду пробовать.
19 мар 17, 19:29    [20311296]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить