..


Sponzorované odkazy

Méně dotazy s INSERT ... O DUPLICATE KEY UPDATE

Článek napsal Max Bossi

A "dobře známo, že správný dotaz řízení je podmínkou pro stabilní a efektivní realizaci.
V tomto článku se budeme prezentovat málo známý, ale velmi silný syntax, mluvím o ON DUPLICATE KEY UPDATE bod.

Toto ustanovení se používá při INSERT a jeho účelem je ověřit, před vložením, je zdvojení primární klíč (primární klíč), nebo jedinečný klíč (UNIQUE KEY), a pokud se tak stane motor un'UPDATE MySQL se místo toho vložit.

Výhodou tohoto ustanovení je jasný: píšete jeden dotaz namísto dvou s výhodami z hlediska výkonu a vyčištění kódu.

Vezměme si příklad. Předpokládejme, že chceme vytvořit jednoduchý skript, který provede záznam návštěvníků našich stránek. Pod tabulkou strukturu naší databáze:

  • IP (key)
  • numero_visite
  • ultima_visita
Chtít záznam všech IP na cestě na našich stránkách jsme se, v souladu s obvyklými logiku, to SELECT první předběžné Zkontrolujte, zda IP již není v DB, a pouze v případě, že odpověď je záporná (IP není k dispozici) na dotaz INSERT.

Díky syntaxe INSERT ... O DUPLICATE KEY UPDATE ... můžeme dosáhnout stejného výsledku s jedním dotazem:

 



 INSERT INTO HODNOTY ip_visitatori (123 .123.123.123 ', 1, NYNÍ ())

 





 O KEY DPLICATE







 UPDATE numero_visite numero_visite = + 1, ultima_visita = NOW ();

 
Proto, pokud je IP je zařazení je, jinak spustit jednoduchý update postižených záznamu. Pomocí této syntaxe umožňuje získat výhody z hlediska výkonu ve výši 30%.

S trochou "představivost a vynalézavost v otázce klauzule, že může být velmi užitečné v různých situacích.
Například můžeme použít v kombinaci s podmínkou. Zde je příklad: Předpokládejme, že máte tabulku hypotetické on-line aukční web v následující struktuře:

  • ID_asta
  • migliore_offerta
Předpokládejme, že chcete pokračovat s umístěním nové nabídky, pokud aukce již nabídl, že bude jednoduchý upgrade, ale pouze v případě, že nabídka je vyšší než už tam:
 



 Nabídky INSERT INTO VALUES (1, 120)

 





 O KEY DPLICATE







 UPDATE migliore_offerta = KDYŽ (hodnoty (migliore_offerta) <120, 120, hodnoty (migliore_offerta))

 
Prostřednictvím jednoduchého dotazu jsme vyřešili jedním tahem pera ... V opačném případě bychom museli použít několik dotazů s následným plýtvání zdroji (i větší riziko chyb).

Ve stejné kategorii ...
E-Learning
MS Access (Advanced) MS Access (Advanced)
Naučte se vytvářet a spravovat databáze snadno a rychle. Od 29 €.
MySQL (kurz) MySQL (kurz)
Správa open-source databáze. Od 39 €.
SQL a databází (kurz) SQL a databází (kurz)
Vytváření a správa relační databáze. Od 39 €.
Sponzorované odkazy