(Ano, přidávám další Odpovědět. Odůvodnění:Řeší základní problém jiným způsobem.)
Zdá se, že základní problém spočívá v tom, že existuje stále rostoucí tabulka „transakcí“, ze které se odvozují různé statistiky, například SUM(amount)
. Výkon tohoto se bude jen zhoršovat a zhoršovat, jak bude tabulka (tabulky) růst.
Základem této odpovědi bude podívat se na data dvěma způsoby:„Historie“ a „Aktuální“. Transactions
je Historie. Nová tabulka by byla Current
součty za každého uživatele. Ale vidím několik způsobů, jak to udělat. Každý z nich zahrnuje určitou formu mezisoučtu(ů), aby se zabránilo přidání 773 000 řádků k získání odpovědi.
- Tradiční způsob bankovnictví... Každou noc počítejte denní
Transactions
a přidejte je doCurrent
. - Způsob materializovaného zobrazení... Při každém přidání řádku do
Transactions
, přírůstekCurrent
. - Hybridní:Uchovávejte denní mezisoučty v "Souhrnné tabulce". Sečtením těchto mezisoučtů získáte
SUM
přes včerejší noc.
Další diskuze v mém blogu na Souhrnné tabulky .
Všimněte si, že aktuální zůstatek pro bankovní nebo hybridní způsob je trochu složitější:
- Získejte částku za včerejší noc
- Přidejte všechny transakce, ke kterým došlo během dne.
Jakýkoli z přístupů bude hodně rychlejší než skenování všech 773 tisíc řádků pro uživatele, ale bude to složitější kód.