Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как наилучшим образом выполнить несколько UPDATE в MS SQL 2005SE / 6 сообщений из 6, страница 1 из 1
04.12.2006, 17:21
    #34175579
kolka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как наилучшим образом выполнить несколько UPDATE в MS SQL 2005SE
Как оптимизировать update нескольких строк, на данный момнет использую метод , в котором заново создается SQLConnection, SQLcommand, и вызываю метод для каждой записи отдельно, таких записей в среднем 200 - 300
...
Рейтинг: 0 / 0
04.12.2006, 17:27
    #34175600
jenia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как наилучшим образом выполнить несколько UPDATE в MS SQL 2005SE
Pervoe - Store Procedure
...
Рейтинг: 0 / 0
04.12.2006, 17:33
    #34175627
ScаliаR
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как наилучшим образом выполнить несколько UPDATE в MS SQL 2005SE
Либо держать соединение и не закрывать его, либо выполнять напрямую в базе сразу несколько апдейтов в одном вызове...

Я предпочитаю вариант - держать соединение и юзать хранимые процедуры.

А вообще - если у тебя какое-то действие вызывает порядка 200 апдейтов - пиши хранимку и в ней делай эти 200 апдейтов. конечно если логика построения этих запросов может быть выдрана из кода и перенесена в хранимки, в противном случае: подумать над оптимизацией самого запроса, выполнять sql запросы напрямую без хранимых процедур.С уважением, Денис
...
Рейтинг: 0 / 0
04.12.2006, 17:53
    #34175693
kolka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как наилучшим образом выполнить несколько UPDATE в MS SQL 2005SE
Сделано так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
         using (SqlConnection connection = new SqlConnection(connectionString))
         {
            String updateStr = @"UPDATE ";
            using (SqlCommand cmd = new SqlCommand(updateStr, connection))
            {
               cmd.Parameters.AddWithValue("@iid", iid);
               cmd.Parameters.AddWithValue("@cid", cid);
               connection.Open();
               cmd.ExecuteNonQuery();
            }
         }
      }

Думаю переделать так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
         using (SqlConnection connection = new SqlConnection(connectionString))
         {
            String updateStr = @"UPDATE ";
            using (SqlCommand cmd = new SqlCommand(updateStr, connection))
            {
               connection.Open();
                // так реально сделать??
               foreach(Item it in Items)
               {
                   cmd.Parameters.AddWithValue("@iid", it.iid);
                   cmd.Parameters.AddWithValue("@cid", it.cid);
                   cmd.ExecuteNonQuery();
               }

            }
         }
      }

...
Рейтинг: 0 / 0
04.12.2006, 18:16
    #34175755
BlackTigerAP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как наилучшим образом выполнить несколько UPDATE в MS SQL 2005SE
1. Создаешь параметризированный SqlCommand для UPDATE
2. Открываешь транзакцию
3. Делаешь все свои апдейты
4. Подтверждаешь транзакцию

Если же не создавать транзакцию руками, то они всё равно будет создаваться, но уже ДЛЯ КАЖДОГО UPDATE, и коммитится тоже для каждого. Оттого и тормоза.

Еще вариант есть. Но с ним надо быть ОЧЕНЬ осторожным. Можно сгенерировать на клиенте один БОЛЬШООООЙ скрипт, где будут собраны все обновления, а потом целиком его на сервер и послать. 
How can men die better than facing fearful odds,
For the ashes of their fathers and the temples of their gods?

| Мой Brainbench | BookReader 1.1 | Wallpaper Cycler |
...
Рейтинг: 0 / 0
04.12.2006, 19:07
    #34175861
Guest_New
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как наилучшим образом выполнить несколько UPDATE в MS SQL 2005SE
Посмотрите в сторону SqlDataAdapter.Update().

По моему в данном случае это будет удобнее.

--------------------
С уважением.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как наилучшим образом выполнить несколько UPDATE в MS SQL 2005SE / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]