Вообще вам нужна ОПТИМИЗАЦИЯ стола, когда его файл данные слишком фрагментирован на диск (инструменты использовать для вашей файловой системы, чтобы проверить - сценарий, связанный GiantRobot не вычисляет фрагментацию), когда было обновлено много строк и изменилось их размер (что создало фрагментацию строк) или после удаления многих записей, когда вы не будете добавлять их снова в ближайшее время. Поскольку свободное пространство используется MySQL для новых строк, когда удаленные и новые записи имеют одинаковый размер строки, OPTIMIZE не требуется.
CHECK TABLE используется только в том случае, если вы подозреваете повреждение данных (что не должно происходить при обычном прогоне). В некоторых дистрибутивах Linux (например, Debian) есть сценарии запуска, которые запускают CHECK TABLE для всех таблиц при запуске сервера MySQL. REPAIR TABLE затем используется для восстановления поврежденных таблиц.
ANALYZE TABLE может использоваться для обновления индекса мощности, которая используется при определении плана выполнения запроса. Обычно это необходимо только в особых случаях.
Непонятно из вашего вопроса, как используются ваши таблицы статистики ... сколько записей, удалений и чтений? Мои таблицы статистики записываются все время, и один раз в день они считываются, данные консолидируются и записываются в другую таблицу, а затем удаляются. В этом случае нет необходимости запускать OPTIMIZE, поскольку данные не часто читаются, а свободное пространство используется для новых данных. Я использую разделение по дням, поэтому вместо удаления записей (что довольно медленно) я просто DROP PARTITION (что занимает 1 сек.)
Таблицы, которые обновляются каждый день: Они MyISAM или InnoDB ??? – RolandoMySQLDBA