Zadejte hledaný výraz...

Smazání řádků, které nebyly aktualizovány

Taps
verified
rating uzivatele
(118 hodnocení)
2. 7. 2015 08:16:01
Zdravím, pomocí cronu automaticky aktualizuji data v databázi. Počet záznamů, které jsou aktualizovány se může měnit a tak se chci zeptat zda existuje nějaká možnost jak smazat řádky, u kterých nebyla provedena aktualizace. Děkuji
2. 7. 2015 08:16:01
https://webtrh.cz/diskuse/smazani-radku-ktere-nebyly-aktualizovany#reply1123088
Jan Stejskal
verified
rating uzivatele
(7 hodnocení)
2. 7. 2015 08:21:10
Smazat vše a vložit jen aktualizované, tedy pouze opačný postup než hledáte.
Jakékoliv řešení využívající update případně delete s podmínkou bude vždy pomalejší než truncate. Nemá smysl se snažit vymýšlet nějaké složité řešení.
2. 7. 2015 08:21:10
https://webtrh.cz/diskuse/smazani-radku-ktere-nebyly-aktualizovany#reply1123087
James_Scott
verified
rating uzivatele
(7 hodnocení)
2. 7. 2015 08:26:43
nebo pridat bool(true/false) sloupec a po aktualizaci dat aktualizovat i tento udaj. Pri mazani pak tohle kontrolovat.
2. 7. 2015 08:26:43
https://webtrh.cz/diskuse/smazani-radku-ktere-nebyly-aktualizovany#reply1123086
Jirka
verified
rating uzivatele
(74 hodnocení)
2. 7. 2015 08:46:50
Neni treba vymyslet zadne klicky - staci pridat sloupec typu timestamp (napr nazvem Updated), nastavit pro nej 'default NULL ON UPDATE CURRENT_TIMESTAMP'. Po updatu polozek pak budou mit neaktualizovane ten sloupec NULL a smazat je pak bude jednoduche
2. 7. 2015 08:46:50
https://webtrh.cz/diskuse/smazani-radku-ktere-nebyly-aktualizovany#reply1123085
init.22
verified
rating uzivatele
(7 hodnocení)
2. 7. 2015 08:47:27
v MSSQL existuje konstrukce MERGE, která slouží právě k tomu (rozpozná řádky, které existují a můžete je updatovat, pak řádky, které jsou oproti stávající tabulce nové a můžete je přidat a pak řádky, které tam chybí a můžete je smazat) .. možná něco podobného bude i pro MySQL
2. 7. 2015 08:47:27
https://webtrh.cz/diskuse/smazani-radku-ktere-nebyly-aktualizovany#reply1123084
tomve
verified
rating uzivatele
(22 hodnocení)
2. 7. 2015 11:29:16
Jan Stejskal: to je na nic, pokud potřebuješ s těmi daty pracovat bez výpadku, ale jinak taky možný
nej řešení je, co píše James_Scoot a jiriki - extra sloupec a podle něj to kontrolovat
2. 7. 2015 11:29:16
https://webtrh.cz/diskuse/smazani-radku-ktere-nebyly-aktualizovany#reply1123083
Taps
verified
rating uzivatele
(118 hodnocení)
2. 7. 2015 11:35:24
Data se mi aktualizují z csv souboru. Dnes např. může být záznam aktualizovaný, ale zítra nemusí být součástí csv souboru, tudíž nebude aktualizovaný a tak ho z mysql potřebuji smazat. Takže to není tak, že by sloupce měli null. Jediné co mě napadlo, tak při DELETE porovnávat čas
2. 7. 2015 11:35:24
https://webtrh.cz/diskuse/smazani-radku-ktere-nebyly-aktualizovany#reply1123082
Jirka
verified
rating uzivatele
(74 hodnocení)
2. 7. 2015 12:05:42
A co brani tomu pred kazdym updatem cely sloupec UPDATED nastavit na NULL?
2. 7. 2015 12:05:42
https://webtrh.cz/diskuse/smazani-radku-ktere-nebyly-aktualizovany#reply1123081
Jan Stejskal
verified
rating uzivatele
(7 hodnocení)
3. 7. 2015 10:23:14
Napsal Tomve;1206442
Jan Stejskal: to je na nic, pokud potřebuješ s těmi daty pracovat bez výpadku, ale jinak taky možný
nej řešení je, co píše James_Scoot a jiriki - extra sloupec a podle něj to kontrolovat
Pokud je na výběr "výpadek" a neaktuální data, pak je lepší ošetřit ten výpadek (například uzavřením do transakce). Jakákoliv zde navrhovaná manipulace s daty bude vždy časově náročnější a navíc zcela zbytečná, když se s daty nijak dále nepracuje.
3. 7. 2015 10:23:14
https://webtrh.cz/diskuse/smazani-radku-ktere-nebyly-aktualizovany#reply1123080
Kovboj
verified
rating uzivatele
(13 hodnocení)
3. 7. 2015 10:57:58
Napsal Jan Stejskal;1206390
Smazat vše a vložit jen aktualizované, tedy pouze opačný postup než hledáte.
Jakékoliv řešení využívající update případně delete s podmínkou bude vždy pomalejší než truncate. Nemá smysl se snažit vymýšlet nějaké složité řešení.
No, pokud by ti nevadilo že chvíli nemáš vůbec ŽÁDNOU databázi ;-)
3. 7. 2015 10:57:58
https://webtrh.cz/diskuse/smazani-radku-ktere-nebyly-aktualizovany#reply1123079
qwertr
verified
rating uzivatele
(7 hodnocení)
3. 7. 2015 11:06:30
Takze :
a) Zatial nie je info a ako mnozstvo dat sa jedna, takze pomalost update a delete nemusi vadit.
b) Moze sa urobit insert do pomocnej tabulky a udaje aktualizovat niecim ako update as select pomoctable. Takze bude len jeden prikaz update a potom sa vymazu tie, ktore sa neaktualizovali.
c) Rychlost insertov. Pozrel by som sa na nieco ako batch insert v mysq.
3. 7. 2015 11:06:30
https://webtrh.cz/diskuse/smazani-radku-ktere-nebyly-aktualizovany#reply1123078
Kovboj
verified
rating uzivatele
(13 hodnocení)
3. 7. 2015 11:58:44
Napsal Taps;1206444
Data se mi aktualizují z csv souboru. Dnes např. může být záznam aktualizovaný, ale zítra nemusí být součástí csv souboru, tudíž nebude aktualizovaný a tak ho z mysql potřebuji smazat. Takže to není tak, že by sloupce měli null. Jediné co mě napadlo, tak při DELETE porovnávat čas
Mimochodem, opravdu ho potřebuješ smazat a ne třeba jen zakázat?
Pokud jde o nějakou aktualizaci zboží na eshopu z dat od dodavatele tak se zboží může opět objevit. A když ho jednou smažeš a za čas znova vložíš jako nové, tak tím v databázi získá nové ID - což pokud se ti ID přepisuje do adresy může dělat zbytečné problémy robotům při indexování.
3. 7. 2015 11:58:44
https://webtrh.cz/diskuse/smazani-radku-ktere-nebyly-aktualizovany#reply1123077
Jan Stejskal
verified
rating uzivatele
(7 hodnocení)
3. 7. 2015 12:50:17
Napsal Kovboj;1206640
No, pokud by ti nevadilo že chvíli nemáš vůbec ŽÁDNOU databázi ;-)
Na to už jsem reagoval. Například použitím transakce k této situaci nedojde. Je ale třeba ošetřit, aby vkládaná data neměla shodná id s těmi odstraňovanými. V okamžiku vkládání dat totiž nejsou data z cílové tabulky fyzicky smazána (to je také důvod, proč nedojde k vámi zmiňované situaci).
3. 7. 2015 12:50:17
https://webtrh.cz/diskuse/smazani-radku-ktere-nebyly-aktualizovany#reply1123076
Pro odpověď se přihlašte.
Přihlásit