Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Множественный UPDATE / 2 сообщений из 2, страница 1 из 1
16.05.2018, 14:04
    #39645506
A-MaR
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Множественный UPDATE
Будет ли такой множественный UPDATE
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
UPDATE fiscal_sum fs SET
  fs.BeginFiscalSum = 
    CASE fs.FPaymentType
      WHEN 1 THEN 2000
      WHEN 2 THEN 0
      WHEN 3 THEN 500
      -- 
      WHEN 15 THEN 1000
      ELSE 0
    END,
  fs.EndFiscalSum = 
    CASE fs.FPaymentType
      WHEN 1 THEN 2300
      WHEN 2 THEN 0
      WHEN 3 THEN 540
      -- ...
      WHEN 15 THEN 1000
      ELSE 0
    END
WHERE fs.CheckId = 10000;


работать быстрее нескольких одиночных
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
UPDATE fiscal_sum fs SET
  fs.BeginFiscalSum = 2000, fs.EndFiscalSum = 2300
WHERE fs.CheckId = 10000 AND fs.FPaymentType = 1;

UPDATE fiscal_sum fs SET
  fs.BeginFiscalSum = 0, fs.EndFiscalSum = 0
WHERE fs.CheckId = 10000 AND fs.FPaymentType = 2;

UPDATE fiscal_sum fs SET
  fs.BeginFiscalSum = 500, fs.EndFiscalSum = 540
WHERE fs.CheckId = 10000 AND fs.FPaymentType = 3;

UPDATE fiscal_sum fs SET
  fs.BeginFiscalSum = 0, fs.EndFiscalSum = 0
WHERE fs.CheckId = 10000 AND fs.FPaymentType = 4;

-- FPaymentType  5..15

UPDATE fiscal_sum fs SET
  fs.BeginFiscalSum = 0, fs.EndFiscalSum = 0
WHERE fs.CheckId = 10000 AND fs.FPaymentType = 16;


?

В таблице порядка 100тыс. записей, первичный ключ CheckId + FPaymentType.
...
Рейтинг: 0 / 0
16.05.2018, 14:30
    #39645534
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Множественный UPDATE
Он будет однозначно быстрее. Раз эдак в 15...
А для красоты вообще можете задействовать
Код: sql
1.
2.
3.
UPDATE fiscal_sum fs SET
  fs.BeginFiscalSum = ELT(fs.FPaymentType, 2000, 0, 500, ..., 1000, 0)
, ...
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Множественный UPDATE / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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