(Ja, jeg tilføjer en anden svar. Begrundelse:Det løser det underliggende problem på en anden måde.)
Det underliggende problem synes at være, at der er en stadigt voksende "transaktionstabel", hvorfra der udledes forskellige statistikker, såsom SUM(amount)
. Ydeevnen af dette vil kun blive værre og dårligere, efterhånden som tabellen/tabellerne vokser.
Grundlaget for dette svar vil være at se på dataene på to måder:"Historie" og "Aktuel". Transactions
er Historien. En ny tabel ville være den Current
totaler for hver bruger. Men jeg ser flere måder at gøre det på. Hver involverer en eller anden form for subtotal(er) for at undgå at tilføje 773.000 rækker for at få svaret.
- Den traditionelle bankmåde... Hver nat tæller dagens
Transactions
op og føj dem tilCurrent
. - Måden Materialized View... Hver gang en række føjes til
Transactions
, øgCurrent
. - Hybrid:Gem daglige subtotaler i en "oversigtstabel". Sum disse subtotaler for at få
SUM
til i aftes.
Mere diskussion i min blog på Oversigtstabeller .
Bemærk, at den op til anden saldo for bank- eller hybridmetoden er lidt vanskelig:
- Få sidste nats beløb
- Tilføj alle transaktioner, der fandt sted i løbet af dagen.
Enhver af tilgangene vil være en masse hurtigere end at scanne alle 773.000 rækker for brugeren, men det vil være mere kompleks kode.