sql >> Database >  >> RDS >> Mysql

mysql unieke index gebruikt als uitzonderingsbehandelingsmethode in java

Ik zeg dat je dat niet doet, om twee redenen:

  • de foutmeldingen zijn een beetje onduidelijk:ERROR 1062 (23000):Dubbele invoer 'xxx' voor sleutel 1 . Weet je altijd 100% zeker welke sleutel 1 is?
  • het sluit u aan bij een specifieke databaseleverancier

Ik vind het eenvoudiger om transactioneel :

  • controleer op het bestaan ​​van rij;
  • gooi een uitzondering als de rij al bestaat;
  • voeg de nieuwe rij in.

Prestatieproblemen :

Ik zeg twee keer meten, één keer knippen . Profileer het gebruik voor uw specifieke gebruiksscenario. Ik zou zeggen dat de prestaties geen probleem zullen zijn, behalve in de zware db-gebruikscenario's.

De reden is dat zodra u een SELECT boven die specifieke rij, worden de gegevens in de databasecaches geplaatst en onmiddellijk gebruikt voor invoegcontrole gedaan op de index voor de INSERT uitspraak. Als u er ook rekening mee houdt dat deze toegang wordt ondersteund door een index, leidt dit tot de conclusie dat prestaties geen probleem zullen zijn.

Maar meet zoals altijd.



  1. Waarom bin2hex gebruiken bij het invoegen van binaire gegevens uit PHP in MySQL?

  2. Reset root-wachtwoord in MySQL 8

  3. Tabellen kopiëren van de ene database naar de andere in SQL Server

  4. Maandelijks actieve gebruikers (MAU) berekenen in MySQL