..


Sponsede Lenker

Mindre INSERT spørring med ... PÅ DUPLICATE KEY UPDATE

Artikkel skrevet av Max Bossi

Og 'velkjent at en riktig spørring ledelse er en forutsetning for stabil og effektiv implementering.
I denne artikkelen vil vi presentere en lite kjent men svært kraftfull syntaks, jeg snakker om på dupliserte KEY UPDATE klausulen.

Denne klausulen brukes under en INSERT-setning og dens formål er å verifisere, før innsetting, det er en duplisering av en primærnøkkel (primærnøkkel) eller en unik nøkkel (UNIQUE KEY), og hvis dette skjer motoren un'UPDATE MySQL vil i stedet sette inn.

Fordelen med denne klausulen er klart: du skriver en enkelt spørring i stedet for to med fordeler i form av ytelse og kode opprydding.

La oss ta et eksempel. Anta at vi ønsker å lage et enkelt skript som utfører logging av besøkende til nettstedet vårt. Under tabellen struktur DB vår:

  • IP (nøkkel)
  • numero_visite
  • ultima_visita
Ønsker å registrere alle IP transitt på våre sider vi har, i henhold til den vanlige logikken, først foreta en foreløpig SELECT for å bekrefte at IP ikke allerede er i DB, og bare hvis svaret er negativt (IP ikke er tilstede) til å spørre INSERT.

Takket være syntaksen INSERT ... PÅ DUPLICATE KEY UPDATE ... vi kan oppnå samme resultat med en enkelt spørring:

 



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

 





 OM KEY DPLICATE







 UPDATE numero_visite numero_visite = + 1, ultima_visita = NÅ ();

 
Dermed, hvis IP ikke er innsetting er gjort, ellers kan du kjøre en enkel oppdatering av de berørte posten. Bruk denne syntaksen lar deg hente en fordel når det gjelder ytelse lik 30%.

Med litt fantasi og oppfinnsomhet av klausulen i spørsmål det kan være svært nyttig i ulike situasjoner.
For eksempel kan vi bruke den i kombinasjon med en tilstand. Her er et eksempel: Anta at du har en tabell over en tenkt auksjon på strukturert som følger:

  • ID_asta
  • migliore_offerta
Anta at du vil fortsette med innsetting av et nytt tilbud, dersom auksjonen har allerede tilbudt det vil være en enkel oppgradering, men bare hvis budet er høyere enn det som allerede finnes:
 



 INSERT INTO bud VALUES (1, 120)

 





 OM KEY DPLICATE







 UPDATE migliore_offerta = HVIS (VALUES (migliore_offerta) <120, 120, VALUES (migliore_offerta))

 
Gjennom en enkel spørring vi løst med ett slag ... Ellers ville vi ha måttet bruke flere henvendelser resulterte i sløsing med ressurser (og større risiko for feil).

I samme kategori ...
E-Learning
MS Access (Course) MS Access (Course)
Lær hvordan å opprette og administrere databaser enkelt og raskt. Starter fra 29 €.
MySQL (Course) MySQL (Course)
Forvaltning av open-source database. Starter fra 39 €.
SQL og Database (Course) SQL og Database (Course)
Opprette og administrere relasjonsdatabaser. Starter fra 39 €.
Sponsede Lenker