Mysql
 sql >> Base de données >  >> RDS >> Mysql

index unique mysql utilisé comme méthode de gestion des exceptions en java

Je dis que vous ne le faites pas, pour deux raisons :

  • les messages d'erreur sont un peu flous :ERREUR 1062 (23000) :entrée en double 'xxx' pour la clé 1 . Êtes-vous toujours sûr à 100 % de la clé ?
  • il vous verrouille sur un fournisseur de base de données spécifique

Je trouve plus simple de transactionnellement :

  • vérifier l'existence de la ligne ;
  • lancer une exception si la ligne existe déjà ;
  • insérer la nouvelle ligne.

Problèmes de performances :

Je dis mesurer deux fois, couper une fois . Profilez l'utilisation pour votre cas d'utilisation spécifique. En tête, je dirais que les performances ne seront pas un problème, sauf pour les scénarios d'utilisation intensive de la base de données.

La raison en est qu'une fois que vous avez effectué un SELECT sur cette ligne spécifique, ses données seront placées dans les caches de la base de données et immédiatement utilisé pour le contrôle d'insertion effectué sur l'index pour le INSERT déclaration. De plus, garder à l'esprit que cet accès est soutenu par un index conduit à la conclusion que les performances ne seront pas un problème.

Mais, comme toujours, mesurez.