Dans un serveur de 1 Go, ne pas avoir innodb_buffer_pool_size plus d'environ 200M. Le régler sur 800M entraînera un échange. MySQL s'attend à ce que ses caches restent dans la RAM ; lorsqu'ils sont échangés sur le disque, les performances en souffrent terriblement.
Votre table est probablement trop grande pour être entièrement mise en cache. Ainsi, une "analyse de table" videra le cache, le rendant inutile et la requête s'exécutera à la vitesse du disque. Trouvez un moyen d'éviter ce genre de requêtes ou obtenez plus de RAM.