Ik wil zo efficient mogelijk het aantal hits op mijn site opslaan in een mysql database en deze beschikbaar maken voor verschillende grafieken. Momenteel heb ik de volgende tabel (stats_hits) daarvoor verzonnen:
Met andere woorden: de tabel bestaat uit 25 kolommen. De eerste bevat de datum en de overige 24 het aantal hits in elk uur van de dag. De 432 in de eerste recordset betekent "432 hits tussen 01:00 en 01:59 in de ochtend van 22 april 2006". Op deze manier kan ik gedetailleerde informatie over het aantal hits (=pageviews) opslaan terwijl de database maar met 365 recordsets per jaar groeit
Ik dacht nu met een aantal eenvoudige queries informatie te kunnen ophalen over bijvoorbeeld het aantal pageviews:
Vandaar twee vragen:
code:
1
2
3
4
5
6
7
| +------------+------+------+------+------+------+ | date | h1 | h2 | ... | h23 | h24 | +------------+------+------+------+------+------+ | 2006-04-22 | 432 | 543 | ... | 123 | 32 | +------------+------+------+------+------+------+ | 2006-04-23 | 541 | 644 | ... | 321 | 144 | +------------+------+------+------+------+------+ |
Met andere woorden: de tabel bestaat uit 25 kolommen. De eerste bevat de datum en de overige 24 het aantal hits in elk uur van de dag. De 432 in de eerste recordset betekent "432 hits tussen 01:00 en 01:59 in de ochtend van 22 april 2006". Op deze manier kan ik gedetailleerde informatie over het aantal hits (=pageviews) opslaan terwijl de database maar met 365 recordsets per jaar groeit
Ik dacht nu met een aantal eenvoudige queries informatie te kunnen ophalen over bijvoorbeeld het aantal pageviews:
- op 22 april, verdeeld over uren van de dag
- op 22 en 23 april (gemiddeld), verdeeld over uren van de dag
- aantal pageviews in april, verdeeld over de dagen van april
- aantal pageviews in 2006, verdeeld over maanden
SQL:
1
2
| SELECT SUM(h1) + SUM(h2) + SUM(h3) ... + SUM(h24) WHERE MONTH(date) = 4 AND YEAR(date) = 2006 |
Vandaar twee vragen:
- hoe goed / slecht is deze tabel werkelijk?
- kan ik niet op een efficientere manier de gevraagde gegevens oproepen? Ik heb gezocht op MySQL.com, maar kon geen functie vinden die werkt in de zin van "SELECT SUM(1 to 24) FROM ..."
"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."
