java - 唯一约束和程序查询是否存在的优缺点?
PHP中文网
PHP中文网 2017-04-18 10:03:43
0
3
387

我想要保持数据库记录的不重复,现在有两种方案,一种是给这一个(或多个)字段添加唯一性约束,一种是程序先去查询数据库是否存在给个字段值的记录,再决定是否插入?请问这两种方式该如何抉择?有更好的方式么?

PHP中文网
PHP中文网

认证高级PHP讲师

répondre à tous(3)
巴扎黑

S'appuyer sur le programme pour garantir l'unicité n'est pas fiable, car dans des situations de forte concurrence, les deux étapes suivantes se chevaucheront, entraînant des insertions répétées :

  1. Vérifiez s'il existe déjà un enregistrement dans la base de données

  2. Sinon, insérez l'enregistrement

小葫芦

Il vaut mieux choisir la contrainte unique :

  • Simplifiez la logique de l'application.

  • Lors de l'établissement d'une contrainte d'unicité, le système crée généralement automatiquement un index pour garantir l'unicité tout en augmentant les performances des requêtes. (Documentation PostgreSQL)

L'ajout d'une contrainte unique créera automatiquement un B-tree
index unique sur la colonne ou le groupe de colonnes répertorié dans la contrainte.

伊谢尔伦

L'auteur doit comprendre quel est le but de la base de données. Le système de base de données est développé à partir du système de fichiers. Si vous suivez la deuxième option, vous pouvez le stocker directement sous forme de fichier. La base de données n'est pas qu'un simple SQL. En tant que SGBD, elle fournit également de nombreuses autres fonctions, vous permettant de vous concentrer sur la résolution des problèmes d'application tout en optimisant l'accès sous-jacent au système.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal