Вычитал на просторах интернета что для обновления данных в ячейках, если требуется обновить 500 строчек например быстрее использовать конструкцию

Код AS1/AS2:
INSERT INTO table (a,b,c) VALUES (v1,v2,v3),(v4,v5,v6), ...500 раз ON DUPLICATE KEY UPDATE b=VALUES(b), c=VALUES(c)
Чем 500 раз вызывать

Код AS1/AS2:
UPDATE table SET b=vY, c=vZ WHERE a = vX
Но после того как я обновляю таким образом 500 строчек в таблице ее размер увеличивается с 50кБ до 61кБ.
И лечится это только вызовом

Код AS1/AS2:
OPTIMIZE TABLE table
Почему таблица "раздувается" после использования ON DUPLICATE KEY UPDATE? И что все-таки лучше использовать если нужно обновить много строк в БД?