En effet 30s c'est beaucoup
qu'essayes-tu de faire comme requête ?
normalement un SELECT d'une valeur ne doit pas dépasser 1 ms quelle que soit la taille de la table, à condition qu'il y ait un index.
Tu peux faire un EXPLAIN de ta requête pour voir les index utilisés et les index possibles.
Tu peux aussi créer un index qui couvre tous les champs (time +value) ,l'intérêt est que MySQL n'aura même pas à lire la table puisque la valeur sera déjà dans l'index.
Si tu fais des agrégats (GROUP BY ...) tu dois surement charger beaucoup de données en ram, il faut surement augmenter la taille des buffers, ça peut monter à plusieurs Go, la config dépend du type d'engine utilisé.
Si vraiment la taille est pénalisante, tu peux partitionner ta table en fonction de la date (par mois / trimestre /année)
En espérant t'être utile.