Ho questo dubbio perchè l'ottimizzazione al termine di una query di tipo DELETE verrebbe eseguita diverse volte, in pratrica ogni volta che un utente svuota la propia lista messaggi, cosa che può capitare decine di volte nel giro di qualche minuto.

In più non mi è mai capitato di trovare codice di terze parti con una query di ottimizzazione in mezzo, allora mi è nato questo dubbio... non vorrei fare peggio esagerando con questa pocedura.

Un'altra soluzione che avevo pensato è di fare una query di ottimizzazione sulle tabelle critiche, che abbia il via una volta ogni giorno in un determinato orario.

Infine riporto qualche riga presa da Html.it

Per poter essere utilizzato, OPTIMIZE TABLES prevede i privilegi di estrazione ed inserimento dei dati e possono essere passate come parametri soltanto tabelle di tipo MyISAM, InnoDB e ARCHIVE, l'ultima tipologia è prevista solo da MySQL 5.0.16. Inoltre è bene sapere che al momento dell'ottimizzazione le tabelle interessate subiscono un lock in lettura e scrittura.

....dove precisa una controindicazione.