У меня есть таблица MySQL контакты , со структурой следующим образом
+--------------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+----------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| contactee_id | int(11) | NO | MUL | 0 | |
| contacter_id | int(11) | NO | MUL | 0 | |
+--------------+----------+------+-----+---------+----------------+
contactee_id и contacter_id - оба идентификатора, которые вместе определяют отношения между двумя пользователями. Чтобы рассчитать количество отношений, которые есть у пользователя, у меня есть следующий запрос
INSERT INTO followers (id, followers)
SELECT contactee_id, 1
FROM contacts
ON DUPLICATE KEY
UPDATE followers = followers + 1
Проблема с этим запросом заключается в том, что он блокирует таблицу contacts слишком долго (более 16 минут). Я хочу сделать это в пакетном режиме, чтобы SQL не блокировал таблицу контактов слишком долго. Я подумал о нескольких способах, но все они должны заблокировать весь стол. Есть ли способ, которым это можно сделать?