general que necesita para optimizar mesa cuando su archivo de datos está demasiado fragmentado en el disco (herramientas de uso para el sistema de archivos para comprobar - la secuencia de comandos vinculados por GiantRobot no calcula la fragmentación), cuando hubo muchas filas actualizadas y cambió su tamaño (lo que crearía una fragmentación de fila) o después de eliminar muchos registros cuando no los va a volver a agregar pronto. Debido a que MySQL utiliza espacio libre para nuevas filas, cuando los registros eliminados y nuevos tienen el mismo tamaño de fila, no es necesario OPTIMIZAR.
CHECK TABLE se usa solo cuando sospecha que hay daños en los datos (que no deberían ocurrir durante la ejecución normal). Algunas distribuciones de Linux (Debian, por ejemplo) tienen scripts de inicio que ejecutan CHECK TABLE para todas las tablas en el inicio del servidor MySQL. REPAIR TABLE se usa para reparar las tablas dañadas.
ANALYZE TABLE se puede utilizar para actualizar la cardinalidad del índice, que se utiliza para determinar el plan de ejecución de la consulta. Por lo general, solo se necesita en casos especiales.
No está claro por su pregunta cómo se usan sus tablas de estadísticas ... ¿cuántas escrituras, eliminaciones y lecturas? Mis tablas de estadísticas tienen escrituras todo el tiempo, y una vez al día se leen, los datos se consolidan y se escriben en otra tabla, luego se eliminan. En tal caso, no es necesario ejecutar OPTIMIZE ya que los datos no se leen con frecuencia y el espacio libre se reutiliza para nuevos datos. Estoy usando partición por día, así que en lugar de eliminar los registros (que es bastante lento) simplemente DROP PARTITION (que toma 1 seg máximo)
Las tablas que se actualizan todos los días: ¿Están MyISAM o InnoDB ??? – RolandoMySQLDBA