Как использовать MySQL ON DUPLICATE KEY UPDATE, чтобы избежать увеличения идентификатора (ID)?

  • 6 августа 2023 г. 7:08
Ответы на вопрос 2
MySQL ON DUPLICATE KEY UPDATE можно использовать для избежания увеличения идентификатора (ID), если инсертируемые данные уже существуют. Для этого нужно добавить дополнительное поле в таблицу и добавить для него уникальный индекс. После этого можно использовать следующий запрос:

INSERT INTO table_name (id, field1, field2, ...)
VALUES (1, value1, value2, ...)
ON DUPLICATE KEY UPDATE
    field1 = value1,
    field2 = value2,
    ... 
WHERE id = 1;
Для оптимизации скорости и избежания конкуренции при вставке данных в таблицу в MySQL, можно использовать механизм кеширования последовательностей (sequence) для каждого сеанса. Например, каждый сеанс может запросить пакет номеров, где первый сеанс получит номера от 1 до 10, второй - от 11 до 20, и так далее. 

В разных базах данных механизмы кеширования могут отличаться, но общая идея состоит в оптимизации скорости работы. Если сеанс закрывается и номера 7, 8, 9 не были использованы, то они считаются "потерянными" и уже не могут быть использованы повторно.

Можете представить эту ситуацию, как использование туалетной бумаги: если вы уже использовали диапазон номеров как бумагу, вы не захотите доставать из ведра эту грязную бумагу и использовать ее снова.
Похожие вопросы