Les opérations d'écriture pour une seule ligne dans une table de données ne doivent pas prendre 5 secondes, quelle que soit la taille de la table.
Votre index clusterisé est-il basé sur le champ d'horodatage ? Si ce n'est pas le cas, cela devrait être le cas, de sorte que vous n'écrivez pas quelque part au milieu de votre table. Assurez-vous également que vous utilisez des tables InnoDB - MyISAM n'est pas optimisé pour les écritures.
Je proposerais d'écrire en deux tables :une table à long terme, une table de rapport à court terme avec peu ou pas d'indexation, qui est ensuite vidé au besoin.
Une autre solution consisterait à utiliser memcached ou une base de données en mémoire pour les données de rapport en direct, afin qu'il n'y ait pas d'accès à la base de données de production.
Une autre réflexion :à quel point exactement l'un ou l'autre de ces rapports doit-il être ? Peut-être récupérer une nouvelle liste sur une base chronométrée plutôt qu'une fois pour chaque l'affichage de la page serait suffisant.