Autor | Zpráva | ||
---|---|---|---|
PetraPP Profil |
#1 · Zasláno: 11. 12. 2019, 15:57:10
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 |
#2 · Zasláno: 11. 12. 2019, 20:19:33
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) 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. |
||
Časová prodleva: 5 let
|
0