Jeg siger, at du ikke gør det af to grunde:
- fejlmeddelelserne er lidt uklare:FEJL 1062 (23000):Dubletindtastning 'xxx' for nøgle 1 . Er du altid 100 % sikker på, hvilken nøgle der er 1?
- det låser dig til en bestemt databaseleverandør
Jeg finder det nemmere at transaktionelt :
- tjek for rækkens eksistens;
- smid en undtagelse, hvis rækken allerede eksisterer;
- indsæt den nye række.
Ydeevneproblemer :
Jeg siger mål to gange, klip én gang . Profil brugen til din specifikke brugssag. Øverst i hovedet vil jeg sige, at ydeevnen ikke vil være et problem undtagen for de tunge db-brugsscenarier.
Årsagen er, at når du udfører en SELECT
over den specifikke række, vil dens data blive placeret i databasens cache og med det samme bruges til indsættelseskontrol udført på indekset for INSERT
udmelding. Også at huske på, at denne adgang understøttes af et indeks, fører til den konklusion, at ydeevne ikke vil være et problem.
Men mål som altid.