Autor Zpráva
PetraPP
Profil
Ahojte,
mám v mySQL mnoho dat a Wedos mně právě napsal, že mám v mySQL více jak 1GB dat. Ukládám si tam teplotu, vlhkost, tlak atd., tak že je tam toho hodně. Aktuálně ukládám po 1 minutě, což dost zaplňuje mySQL.

Chtěla bych mySQL promazat a ponecha pouze data po 5-ti minutách tj. 0 - 5 - 10 - 15 - 20 - 25 - 30 - 35 - 40 - 45 - 55 minut. Zbytek smazat.

Než něco takového udělám, tak se musím zeptat na správný mySQL dotaz, který ponechá pouze data po 5-ti minutách a zbytek smaže. Tohle asi je špatně že?
DELETE FROM testwebkamera WHERE timestamp < NOW() -  INTERVAL 5 MINUTE

Předem hrozně moc děkuji za výpomoc.
Keeehi
Profil
Nejdříve se podívej, jestli ti toto vypíše záznamy, které chceš smazat.
SELECT * FROM testwebkamera WHERE minute(timestamp) NOT IN (0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55)
A pokud ano, tak jen SELECT * stačí vyměnit za DELETE.
Kajman
Profil
Pokud se teplota, tlak atp. nehýbe každou minutu, třeba by stačilo mazat ty záznamy, které mají všechny hodnoty stejné, jako záznam předešlý (edit: a následující).

Ale i kdyby se to čistilo takto, možná bych raději mazal všechny záznamy, které v té pětiminutovce nemají nejmenší timestamp. Ale to bude asi o mnoho náročnější. Možná by se to muselo mazat po částech (postupně po rocích nebo měsících). Kdyby se totiž nebyl z nějaké prodlevy např. uložen záznam z 21:00:xx, ale byl až z 21:01:00, nezbyde v té pětiminutovce žádný vzorek.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0