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

update t
set
f1 = '11'
where f2 = '12'

update t
set
f1 = '21'
where f2 = '22'

...
update t
set
f1 = 'n1'
where f2 = 'n2'
1 фев 16, 10:05    [18754653]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация Update  [new]
Mike_za
Member

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

Возможно, но надо смотреть план
1 фев 16, 10:08    [18754663]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация Update  [new]
Shifu
Member [заблокирован]

Откуда: Из губернии я
Сообщений: 136
bafy_n
Возможно объединить много аналогичных апдейтов в один?

update t
set
f1 = '11'
where f2 = '12'

update t
set
f1 = '21'
where f2 = '22'

...
update t
set
f1 = 'n1'
where f2 = 'n2'

update t
set f1 = case f2
               when '12' then '11'
               when '22' then '21'
               when 'n2' then 'n1'
                         else f1
            end
where f1 in ('12','22','n2')
1 фев 16, 10:09    [18754666]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация Update  [new]
Glory
Member

Откуда:
Сообщений: 104751
bafy_n
Возможно объединить много аналогичных апдейтов в один?

А сколько у вас этих апдейтов ?
И сколько записей в таблице ?
И сколько записей обновляет каждый апдейт ?
И есть ли какие ииндексы у таблицы ?
1 фев 16, 10:22    [18754703]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация Update  [new]
bafy_n
Guest
Shifu, спасибо, то, что надо.
1 фев 16, 10:34    [18754765]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация Update  [new]
bafy_n
Guest
Glory,

1. А сколько у вас этих апдейтов ?
По-разному, в среднем 30.

2. И сколько записей в таблице ?
Более 12 млн.

3. И сколько записей обновляет каждый апдейт ?
Как я написала в примере - одно поле.

4. И есть ли какие ииндексы у таблицы ?
Индексов нет.
1 фев 16, 10:38    [18754785]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация Update  [new]
Mike_za
Member

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

Планы привидите
1 фев 16, 10:39    [18754793]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация Update  [new]
Glory
Member

Откуда:
Сообщений: 104751
bafy_n
3. И сколько записей обновляет каждый апдейт ?
Как я написала в примере - одно поле.

Не полей, а записей
1 фев 16, 10:39    [18754795]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация Update  [new]
bafy_n
Guest
Glory,

По-разному, от 1 до 10.
1 фев 16, 10:42    [18754819]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация Update  [new]
bafy_n
Guest
Mike_za, я не поняла, что за планы)
1 фев 16, 10:43    [18754835]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация Update  [new]
Glory
Member

Откуда:
Сообщений: 104751
bafy_n
По-разному, от 1 до 10.

Вы понимаете, что "оптимизированный" запрос будет сканировать все 12млн записей для нахождения нужных ?
1 фев 16, 10:44    [18754838]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация Update  [new]
bafy_n
Guest
Glory, вот такая оптимизация меня устраивает, спасибо

update t
set f1 = (case f2
when '12' then '11'
when '22' then '21'
...
when 'n2' then 'n1'
end)
where f2 in ('12', '22',...'n2')
1 фев 16, 10:48    [18754861]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация Update  [new]
Glory
Member

Откуда:
Сообщений: 104751
Только не называйте это оптимизацией.
Оптимизация подразумевает увеличение эффективности.
1 фев 16, 10:50    [18754871]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация Update  [new]
Mike_za
Member

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

Ну если у автора нет индексов, то так оно один раз хоть сканироваться будет. Вполне оптимизация)
1 фев 16, 10:55    [18754902]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить