Vous pouvez essayer d'utiliser une base de données basée sur des colonnes. Ces types de bases de données sont bien meilleurs pour les requêtes analytiques du type que vous décrivez. Plusieurs options s'offrent à vous :
http://en.wikipedia.org/wiki/Column-oriented_DBMS
Nous avons eu une bonne expérience avec InfiniDB :
et Infobright a l'air bien aussi :
InfiniDB et Infobright ont tous deux des éditions communautaires open source gratuites, je vous recommande donc de les utiliser pour obtenir des repères sur les types d'avantages en termes de performances que vous pourriez obtenir.
Vous pouvez également envisager de partitionner vos données pour améliorer les performances.