Et indeks på tidsstempelkolonnen og bruger-id ville være nyttigt. Du skal være i stand til at læse outputtet af en EXPLAIN Statement.
Gå til MySQL og gør følgende:
EXPLAIN SELECT timestamp, username, [a few more] FROM log
WHERE timestamp BETWEEN '2012-03-30 08:00:00' AND '2012-03-30 16:00:00'
AND username='XX'
Dette viser dig den plan, MySQL bruger til at udføre forespørgslen. Der vil være kolonne kaldet nøgle. Dette angiver hvilket indeks MySQL bruger i forespørgslen. Jeg formoder, at du vil se ALT der, hvilket betyder, at MySQL scanner bordet fra top til bund og matcher hver række mod din where-klausul. Opret nu et indeks på tidsstemplet og brugerid-kolonnerne. Kør EXPLAIN-sætningen igen. Du bør se det indeks, du oprettede, i nøglekolonnen.
Hvis MySQL bruger indekset, bør din forespørgsel være betydeligt hurtigere. Bare husk ikke at overindeksere. Indekser gør indsættelser, opdateringer og sletninger langsommere. Når du indsætter en ny række i en tabel, og der er tre indekser på tabellen, skal den nye række skrive 3 værdier til de tre forskellige indekser. Så det er et tveægget sværd.