InnoDB работает с транзакциями, возможно поэтому. То есть, при обновлении на самом деле сначала создаются новые строки, а старые помечаются как удаленные. После чего, когда-то, удаленные будут удалены физически.
В данном случае это всё "моя ИМХА"

Потому что именно с Мускулем я во всех тонкостях не знаком. Но основано мнение на опыте и знаниях работы с другими БД и таблицами, начиная еще с DBase.
Когда помеченные строки будут удалены - это я не знаю. Во многих других БД для этого существуют специальные команды. А как это делает Мускуль, я не знаю.
Для аналогии. Вот представь. У тебя есть мешок картошки весом 20 кг. Ты знаешь, что одна картофелина весит, в среднем, 100 гр. Итого - в мешке примерно 200 картофелин. Но когда ты начнешь их перебирать, и удалишь "помеченные гнилью", то останется реально количество картофелин, которые ты можешь использовать для готовки. Пусть это будет 173 картофелины

Но зато это уже реально количество, с которым можно работать.
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)