(Ja, jag lägger till en annan svar. Motivering:Det tar upp det underliggande problemet på ett annat sätt.)
Det underliggande problemet verkar vara att det finns en ständigt växande "transaktionstabell" från vilken olika statistik härleds, såsom SUM(amount)
. Prestanda för detta kommer bara att bli sämre och sämre när tabellen/tabellerna växer.
Grunden för detta svar kommer att vara att titta på data på två sätt:"Historik" och "Aktuell". Transactions
är historien. En ny tabell skulle vara Current
totalt för varje användare. Men jag ser flera sätt att göra det på. Var och en involverar någon form av delsummor för att undvika att lägga till 773 000 rader för att få svaret.
- Det traditionella banksättet... Varje natt räknar upp dagens
Transactions
och lägg till dem iCurrent
. - Sättet med materialiserad vy... Varje gång en rad läggs till i
Transactions
, ökaCurrent
. - Hybrid:Spara dagliga delsummor i en "sammanfattningstabell". Summera dessa delsummor för att få
SUM
till i går kväll.
Mer diskussion i min blogg på Sammanfattningstabeller .
Observera att det upp till andra saldot för bank- eller hybridsättet är lite knepigt:
- Få gårdagens belopp
- Lägg till eventuella transaktioner som inträffade under dagen.
Alla tillvägagångssätt kommer att vara mycket snabbare än att skanna alla 773 000 rader för användaren, men det blir mer komplex kod.