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

Откуда:
Сообщений: 13
Отправляю 10 sql запросов из программы
Как сделать так чтобы было достаточно 1-го только запроса?

запросы типа:
SELECT SUM(value) FROM table ...
13 авг 14, 01:05    [16434279]     Ответить | Цитировать Сообщить модератору
 Re: Минимизировать количество запросов  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Для начала перестать пить коньяк по утрам и начать нормально излагать мысли. Телепаты в отпуске.
13 авг 14, 01:14    [16434296]     Ответить | Цитировать Сообщить модератору
 Re: Минимизировать количество запросов  [new]
storming
Member

Откуда:
Сообщений: 13
Гавриленко Сергей Алексеевич,

В C# у меня 10 переменных которые надо заполнить из базы через SQL, эти 10 переменных у меня крутятся в цикле 100500 раз, программа встает на минут 5. Если бы можно было как нибудь одним махом достать все из базы и присвоить переменным. Может быть создать виртуальную таблицу заранее заполнить, или же массив, если есть такие вещи в mssql
13 авг 14, 01:28    [16434319]     Ответить | Цитировать Сообщить модератору
 Re: Минимизировать количество запросов  [new]
SERG1257
Member

Откуда:
Сообщений: 2752
В хрустальном шаре я вижу union all
13 авг 14, 01:35    [16434332]     Ответить | Цитировать Сообщить модератору
 Re: Минимизировать количество запросов  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 6378
storming,

1) Написать хранимую процедуру, которая сложит ваши десятки SUM() во временную таблицу, а потом одним махом их вам отдаст
2) Использовать union, как уже советовали
3) Использовать подзапросы
4) Использовать таблицу хранимых агрегатов, если позволяют условия задачи (т.е. вычислять SUM() при модификации исходных данных и хранить результаты в отдельной табличке, из которой и делать выборку)
5) Относится к GUI - вынести долгоиграющий запрос в отдельный поток
13 авг 14, 01:54    [16434368]     Ответить | Цитировать Сообщить модератору
 Re: Минимизировать количество запросов  [new]
aleks2
Guest
DarkMaster
storming,

1) Написать хранимую процедуру, которая сложит ваши десятки SUM() во временную таблицу, а потом одним махом их вам отдаст
2) Использовать union, как уже советовали
3) Использовать подзапросы
4) Использовать таблицу хранимых агрегатов, если позволяют условия задачи (т.е. вычислять SUM() при модификации исходных данных и хранить результаты в отдельной табличке, из которой и делать выборку)
5) Относится к GUI - вынести долгоиграющий запрос в отдельный поток


Вангую... проблема тредстартера не десяти запросах к серверу.
Проблема в десяти ТЯЖЕЛЫХ запросах. И куда бы там он не складывал результаты - ничо не поможет.

Пусть спросит себя: а нахера мне эти SUM?
13 авг 14, 05:48    [16434439]     Ответить | Цитировать Сообщить модератору
 Re: Минимизировать количество запросов  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 6378
aleks2
Вангую... проблема тредстартера не десяти запросах к серверу.
Проблема в десяти ТЯЖЕЛЫХ запросах. И куда бы там он не складывал результаты - ничо не поможет.


2 моих последних пункта - потоки и хранимые агрегаты.
14 авг 14, 02:53    [16439141]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить