..


Sponsoroidut linkit

Vähemmän kyselyt INSERT ... ON DUPLICATE Key Update

Artikkelin kirjoittanut Max Bossi

Ja "hyvin tiedossa, että oikea kysely hallinta on edellytys vakaa ja tehokas täytäntöönpano.
Tässä artikkelissa esittelemme vähän tunnettu mutta erittäin tehokas syntaksi, puhun ON TOISTUVA Key Update lauseke.

Tämä lauseke on käytetty INSERT selvitys ja sen tarkoituksena on varmistaa, jotka aiemmin on päällekkäisyyttä perusavain (perusavain) tai yksilöllinen avain (Avaimet), ja jos näin tapahtuu moottori un'UPDATE MySQL sen sijaan lisätä.

Etuna tässä lauseke on selvä: kirjoittaa yhdellä haulla kahden sijaan ja etuja suorituskyvyn ja koodin siivous.

Otetaanpa esimerkki. Oletetaan, haluamme tehdä yksinkertainen skripti, joka suorittaa hakkuut sivuilla kävijöiltä. Alla taulukko rakenne meidän DB:

  • IP (avain)
  • numero_visite
  • ultima_visita
Haluavat tallentaa jokaisen IP matkalla sivuillamme olemme, mukaan tavallista logiikkaa, tee Valitse ensin alustavasti tarkistaa, että IP ei ole jo DB ja vain jos vastaus on negatiivinen (IP ei ole) kyselyn INSERT.

Kiitos syntaksi INSERT ... ON TOISTUVA Key Update ... voimme saavuttaa saman tuloksen yhdellä haulla:

 



 INSERT INTO ip_visitatori VALUES ('123 .123.123.123 ", 1, NOW ())

 





 Keskeisiin DPLICATE







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

 
Niinpä, jos IP on osallisuus on tehty, muuten käytät yksinkertainen päivitys vaikuttaa ennätys. Käyttämällä tätä syntaksi mahdollistaa saada hyötyä suorituskyvyn joka on 30%.

Hieman mielikuvitusta ja kekseliäisyyttä lausekkeen kyseessä voi olla erittäin hyödyllinen erilaisissa olosuhteissa.
Esimerkiksi voimme käyttää sitä yhdessä kunnossa. Tässä esimerkki: Oletetaan, että olet taulukko hypoteettinen online-huutokauppa sivusto rakentuu seuraavasti:

  • ID_asta
  • migliore_offerta
Oletetaan, että haluat jatkaa sijoittamista uuden tarjouksen, jos huutokauppa on jo tarjonnut siellä on yksinkertainen päivittää, mutta vain jos tarjous on suurempi kuin jo olemassa:
 



 Tarjoukset INSERT INTO VALUES (1, 120)

 





 Keskeisiin DPLICATE







 UPDATE migliore_offerta = IF (arvot (migliore_offerta) <120, 120, VALUES (migliore_offerta))

 
Yksinkertaisen kyselyn ratkaisimme yhdellä iskulla ... Muuten olisimme joutuneet käyttämään useita hakuja minkä seurauksena resurssien tuhlausta (ja suurempi riski virheitä).

Samassa luokassa ...
E-Learning
MS Access (Advanced) MS Access (Advanced)
Opi kuinka luoda ja hallita tietokantoja nopeasti ja helposti. Alkaen 29 €.
MySQL (kurssi) MySQL (kurssi)
Hallinta avoimen lähdekoodin tietokanta. Alkaen 39 €.
SQL ja Database (kurssi) SQL ja Database (kurssi)
Luoda ja hallita relaatiotietokantojen. Alkaen 39 €.
Sponsoroidut linkit