![]() |
|
Модераторы: gambit |
![]()
|
|
| Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 3 Всего: 24 |
Всем здравствовать. есть такой вопрос. К примеру у меня есть такой запрос: "UPDATE `clients` SET `owner_id` = '{2}' WHERE `owner_id` = '{1}' AND `name` LIKE '{0}';" куда я подставляю параметры из массива. массивы бывают достаточно большими, к примеру 300-400 элементов. получается что мне нужно выполнить 300-400 запросов к базе. а вопрос вот в чем: как лучше это сделать?
т.е. 1. сначала собирать запрос к базе, потом открывать соединение, выполнять запрос, закрывать соединение, и так 300-400 раз, соединения конечно будут выбираться из пула или 2. открыть одно соединение и потом собирать запросы и выполнять, соединение закрывать после выполнения всех запросов. в этом случае база будет долго занята. мне второй вариант не очень нравиться. или может есть какой то другой вариант выполнения подобной задачи? хранимые процедуры использовать не получиться(да я и не знаю как написать процедуру которая принимает массив параметров). |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 8 Всего: 118 |
Экскалупатор, сделай все одним запросом. В CommandText укажи все свои 300 update запросов и исполни - и пусть ядро СУБД парится
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 3 Всего: 24 |
jonie, ты думаешь это будет лучший вариант? забыл уточнить что с базой еще одновременно работают около 20 человек. правда они не делают столько запросов за раз, но тем не менее очень страдают когда база вдруг не отвечает...
|
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 5 Всего: 306 |
1. все выполнить одной транзакцией или разбить по порциям.
2. все сделать за одно подключение. 3. если строка обновления одинаковая - то использовать параметризованный запрос в цикле. |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 8 Всего: 118 |
Твои запросы похожи на регламентные операции... подождут. -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 3 Всего: 24 |
||||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |