[vz-users] Datenbankeinträge zählen ...

Jakob Hirsch jh at plonk.de
Wed Jan 9 09:52:54 CET 2013


Rainer Gauweiler, 02.01.2013 23:23:
> Wenn Du den Zahlenwert erst in einen Timestamp konvertierst und den
> frägst geht es um ein Vielfaches schneller:

Stimmt. Wenn man direkt mit timestamp vergleicht, kann der query aus
über den Index beantwortet werden (da (channel_id, timestamp) indiziert
ist), ansonsten müssen _alle_ Werte von channel_id=8 angeschaut werden
(was i.A. ein einen table scan bedeutet, also komplettes durchackern der
data-Tabelle).

> Wie kommt man an einen passenden Timestamp?
> Im Web gibt es Umrechner wie z.B. http://elmar-eigner.de/tstamps.html,

Noch einfacher geht's mit der mysql-eigenen Funktion:

SELECT count(*)
FROM volkszaehler.data
where channel_id=8
AND timestamp>=UNIX_TIMESTAMP('2012-12-01')*1000
AND timestamp<UNIX_TIMESTAMP('2013-01-01')*1000;

Oder ein bisschen eleganter:

set @from='2012-12-01';
SELECT count(*)
FROM volkszaehler.data
where channel_id=8
AND timestamp>=UNIX_TIMESTAMP(@from)*1000
AND timestamp<UNIX_TIMESTAMP(date_add(@from, interval 1 month))*1000;


N.B.: Wenn man bei einem Datum die Zeit wegläßt ('2012-12-01'), benutzt
mysql automatisch die Uhrzeit 00:00:00.



More information about the volkszaehler-users mailing list