NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Martin Konečný (pavelco1998):6.3.2017 11:34

Ahoj,
potřeboval bych na každé stránce (tzn. s každým požadavkem) ověřovat, jestli je časově platný záznam v DB a pokud již ne, tak jej smazat. Na řešení mám dvě možnosti:

  1. udělat rovnou DELETE s podmínkou
DELETE FROM table
WHERE exists_to < NOW()
  1. prvně zjistit, jestli je nějaký záznam již expirovaný a teprv pak jej smazat
SELECT 1 FROM table
WHERE exists_to < NOW()

// pokud výsledek vrátí 1, provede se DELETE příkaz (viz výše)

Těchto záznamů v databázi bude minimum (cca do 40) a nebudou se nové objevovat moc často (naopak jen dost zřídka). Mám za to, že je SELECT rychlejší, proto si myslím, že by výkonově byla lepší druhá možnost, když potřeba smazat záznam bude jednou za delší dobu.
Máte s tím někdo zkušenost?

Děkuji

Editováno 6.3.2017 11:35
Odpovědět
6.3.2017 11:34
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Neaktivní uživatel:6.3.2017 12:25

Ahoj, to co je pomalé na DELETE je samotné mazání, nikoli hledání vhodných řádků ke smazání. Pokud zavoláš DELETE na tabulku, kde nebude nic na smazání, bude to řádově stejně rychlé jako SELECT, jen když se pak již něco maže, tak to trvá, neboť se musí předělat data v tabulce.

Rozhodně použij první způsob ;)

EDIT: Čas na php serveru a v databázi může být odlišný, proto vždy používej buď NOW(), nebo ber čas jen z PHP, nikdy ne obojí. Samozřejmě záleží, jak moc přesnou aplikaci děláš.

Editováno 6.3.2017 12:26
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
6.3.2017 12:25
Neaktivní uživatelský účet
Avatar
Martin Konečný (pavelco1998):6.3.2017 12:42

Aha, rozumím, děkuji za odpověď :)

Nahoru Odpovědět
6.3.2017 12:42
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.