De l'documentation:
Pour les tables InnoDB, OPTIMIZE TABLE est mis en correspondance avec ALTER TABLE, qui reconstitue la table pour mettre à jour les statistiques de l'index et l'espace inutilisé libre dans l'index cluster. Depuis MySQL 5.1.27, il est affiché dans la sortie de OPTIMIZE TABLE lorsque vous l'exécutez sur une table InnoDB, comme indiqué ici:
mysql> OPTIMIZE TABLE foo;
+----------+----------+----------+-----------------------------------------------------------
| Table | Op | Msg_type | Msg_text
+----------+----------+----------+-----------------------------------------------------------
| test.foo | optimize | note | Table does not support optimize, doing recreate + analyze ...
| test.foo | optimize | status | OK
+----------+----------+----------+-----------------------------------------------------------
Vous pouvez faire le travail OPTIMIZE TABLE sur d'autres moteurs de stockage en démarrant mysqld avec l'option --skip-new ou --safe-mode. Dans ce cas, OPTIMIZE TABLE est simplement mappé à ALTER TABLE.
Mieux vaut tard que jamais. :) –