MyISAM
Doing OPTIMIZE TABLE mydb.mytable;
performs two basic operations
ALTER TABLE mydb.mytable ENGINE=MyISAM;
ANALYZE TABLE mydb.mytable;
This definitely cleans up table fragmentation and computes fresh statistics for indexes
InnoDB
Doing OPTIMIZE TABLE mydb.mytable;
performs two basic operations
ALTER TABLE mydb.mytable ENGINE=InnoDB;
ANALYZE TABLE mydb.mytable;
While this eliminates fragmentation, ANAYLZE TABLE
is complete useless for InnoDB. I wrote about this a long time ago:
If your data growth rate is very small (or in other words, your dataset stays basically the same size for months at a time), then defragmenting tables would just be overkill. You should probably focus on tuning InnoDB's other aspects (See my Aug 04, 2011
post: Optimizing InnoDB default settings)
I also have posts in the Drupal StackExchange on opimizing MySQL