Pokud mluvíte o větších objemech dat, podívejte se na rozdělování MySQL na oddíly . U těchto tabulek by rozdělení podle dat/času jistě pomohlo výkonu. zde je slušný článek o rozdělení .
Podívejte se na vytvoření dvou samostatných databází:jedné pro všechna nezpracovaná data pro zápisy s minimálním indexováním; druhý pro hlášení pomocí agregovaných hodnot; buď pomocí dávkového procesu pro aktualizaci databáze sestav z databáze nezpracovaných dat, nebo pomocí replikace, která to udělá za vás.
UPRAVIT
Pokud chcete být se svými agregačními přehledy opravdu chytří, vytvořte si sadu agregačních tabulek („dnes“, „od týdne k datu“, „od měsíce do dne“, „podle roku“). Agregovat z nezpracovaných dat do „dnes“ buď denně, nebo v „reálném čase“; agregovat od „po dni“ po „od týdne do dne“ na noční bázi; od „week to date“ po „month to date“ na týdenní bázi atd. Při provádění dotazů připojte (UNION) příslušné tabulky pro časová období, která vás zajímají.
ÚPRAVA #2
Spíše než s jednou tabulkou na klienta pracujeme s jedním databázovým schématem na klienta. V závislosti na velikosti klienta můžeme mít několik schémat v jedné instanci databáze nebo vyhrazenou instanci databáze na klienta. Pro sběr nezpracovaných dat a pro agregaci/vytváření zpráv pro každého klienta používáme samostatná schémata. Provozujeme více databázových serverů, přičemž každý server je omezen na jednu instanci databáze. Kvůli odolnosti jsou databáze replikovány na více serverech a vyrovnávány zatížení pro lepší výkon.