Ако говорите за по-големи обеми данни, вижте Разделянето на MySQL . За тези таблици разделянето по данни/време със сигурност би помогнало за производителността. Има прилична статия за разделянето тук .
Вижте създаването на две отделни бази данни:една за всички необработени данни за записите с минимално индексиране; втора за отчитане с помощта на агрегираните стойности; или с пакетен процес, за да актуализирате базата данни за отчети от базата данни с необработени данни, или използвайте репликация, за да направите това вместо вас.
РЕДАКТИРАНЕ
Ако искате да бъдете наистина умни с отчетите си за обобщаване, създайте набор от таблици за обобщаване („днес“, „седмица до дата“, „месец до дата“, „по година“). Агрегиране от необработени данни до „днес“ или ежедневно, или в „реално време“; обобщаване от "по ден" до "седмица до дата" на база нощ; от „седмица до дата“ до „месец до дата“ на седмична база и т.н. Когато изпълнявате заявки, присъединете (UNION) към съответните таблици за периодите от време, които ви интересуват.
РЕДАКТИРАНЕ №2
Вместо една таблица на клиент, ние работим с една схема на база данни на клиент. В зависимост от размера на клиента, може да имаме няколко схеми в един екземпляр на база данни или специален екземпляр на база данни на клиент. Ние използваме отделни схеми за събиране на необработени данни и за агрегиране/отчитане за всеки клиент. Ние стартираме множество сървъри на база данни, ограничавайки всеки сървър до един екземпляр на база данни. За устойчивост базите данни се репликират на множество сървъри и балансират натоварването за подобрена производителност.