Ik heb een tabel (messages) met daarin een timestamp (created_at) waarop elk bericht is aangemaakt:
De tabel bevat een paar miljoen records. Nu wil ik graag statistieken hieruit halen, bijvoorbeeld door alle berichten van een bepaalde datum te tellen. Hiervoor gebruik ik o.a. de volgende SQL:
Probleem: het bij elke recordset berekenen van de (human-readable) datum zorgt ervoor dat elke query enorm lang duurt (en dat er zelfs een timeout plaatsvindt). Oplossing: een extra kolom aanmaken (date_rendered) waarin voor elke message de timestamp al is omgerekend:
Nu kan ik dit zelf vrij eenvoudig gedaan krijgen mbv een php scriptje, maar ik ben bang dat dit veel langer duurt dan noodzakelijk. Vandaar mijn vraag: als ik de date_rendered kolom nu aanmaak, is er dan een query waarmee ik (dus binnen MySQL), de yyyy-mm-dd datum van elke timestamp kan uitrekenen en kan toevoegen aan de date_rendered kolom?
code:
1
2
3
4
| message_id timestamp text ------------------------------------- 1 1298063318 Hier een beicht 2 1298053197 Nogiets leuks |
De tabel bevat een paar miljoen records. Nu wil ik graag statistieken hieruit halen, bijvoorbeeld door alle berichten van een bepaalde datum te tellen. Hiervoor gebruik ik o.a. de volgende SQL:
SQL:
1
| SELECT DATE_FORMAT(FROM_UNIXTIME(messages.created_at), '%Y-%m-%d') AS theDate, ... |
Probleem: het bij elke recordset berekenen van de (human-readable) datum zorgt ervoor dat elke query enorm lang duurt (en dat er zelfs een timeout plaatsvindt). Oplossing: een extra kolom aanmaken (date_rendered) waarin voor elke message de timestamp al is omgerekend:
code:
1
2
3
4
| message_id date_rendered timestamp text --------------------------------------------------- 1 2011-02-01 1298063318 Hier een beicht 2 2011-02-02 1298053197 Nogiets leuks |
Nu kan ik dit zelf vrij eenvoudig gedaan krijgen mbv een php scriptje, maar ik ben bang dat dit veel langer duurt dan noodzakelijk. Vandaar mijn vraag: als ik de date_rendered kolom nu aanmaak, is er dan een query waarmee ik (dus binnen MySQL), de yyyy-mm-dd datum van elke timestamp kan uitrekenen en kan toevoegen aan de date_rendered kolom?