Gewoonlijk ziet de tabelstructuur er als volgt uit:
tabelpagina's:
id | name | ...
==========================
1 Some Page
2 Some Other Page
tabel pages_views:
page_id | views
================
1 1234
2 80
waar pages_views een unieke index heeft op page_id
Het MySQL-statement om de views te verhogen ziet er dan als volgt uit:
INSERT INTO `pages_views` SET views=1 WHERE page_id=?
ON DUPLICATE KEY UPDATE views=views+1 ;
Sinds pages_views.page_id
uniek is, wordt de rij voor de pagina gemaakt als deze niet bestaat; als het bestaat (dat is de "duplicaatsleutel"-clausule), wordt de teller verhoogd.
Ik heb hier twee afzonderlijke tabellen gekozen, omdat CMS-pagina's meestal niet al te vaak worden bijgewerkt (en daarom worden ze meestal gelezen), terwijl paginaweergaven worden gelezen en bijgewerkt, nou ja, bij elke paginaweergave.