05. december 2005 - 19:07Der er
11 kommentarer og 1 løsning
Alternativ til COUNT i stor db
Hej,
Jeg sidder med en database med en tabel med 150000 poster, der er fordelt ud på ca 100 forksellige brugere. Det er meget vigtigt jeg har en oversigt der ud fra hver bruger står antallet af poster brugeren tilhører. Lige nu bruger jeg "COUNT(bNr)WHERE bruger ='brugerId'" til hver af brugerne, men det tager op til 20sec før siden er loadet, og det er ik acceptabelt.
Nogen gode råd til hvad jeg kunne stille op?
Jeg overvejer at lave en tabel, bestående af antallet af poster for hver bruger, og så opdaterer den når nye tilføjes..
Nej, du skal nok have gang i et felt, som du opdaterer, når der ændres i "store" tabel. Evt. blot i brugertabellen, så du er fri for at lave endnu en tabel. Hvilken database og version er det - MySQL?
Det er MySql 3.23.55 Jeg har fundet ud af jeg har en stor set identisk tabel, faktisk med flere poster i, men smider jeg min sql query efter denne, er der super performance tid.. På den langsomme tabel, er der en del større overhead end den på den nye.
Den langsomme fylder 17mb(overhead op 800kb), den hurtige fylder 11mb(overhead på 400kb). Men der burde der ikke være så stor forskel på performance.. for så stor en db er det jo heller ikke! Kan det have noget med det overhead at gøre!?!?
Det har hjulpet rigtig meget bare at kopiere den til et nyt navn og derefter omdøbt tilbage til det gamle.. Der var nok noget der ikke var helt optimalt!!!
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.