@crayes23

Update case или два запроса?

Что производительнее:

два обычных UPDATE с WHERE условием по primary key или

UPDATE test SET text =
CASE
WHEN id = 1 THEN 'ok'
WHEN id = 2 THEN 'no'
ELSE text <--дополнительный вопрос-- это же не обязательно, зачем тогда так делать?
END
, id - primary key

в InnoDB таблице с 100 000+ строк
  • Вопрос задан
  • 413 просмотров
Решения вопроса 1
@Joysi75
Простые запросы проще сопровождать (нежели гроздья WHEN-ов).
По скорости зависит от наличия одновременных запросов к этой же таблице, с точки зрения блокировок - кол-во их будет одинаковое.
www.mysql.ru/docs/man/InnoDB_Locks_set.html и т.д.

P.S. Подвопрос:
ELSE text <--дополнительный вопрос-- это же не обязательно, зачем тогда так делать?
Это во многих SQL серверах так(например, в Oracle) - анализатор не знает значений полей, участвующих в условиях When, потому ветка ELSE хотя и не обязательна, но может возникнуть RUNTIME ошибка при оптимизации запроса для выполнения.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы