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

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

PHP中文网
PHP中文网

认证高级PHP讲师

全員に返信(3)
巴扎黑

プログラムに依存して一意性を保証することは信頼できません。これは、同時実行性が高い条件下では、次の 2 つのステップが重複し、挿入が繰り返されるためです。

  1. データベースにレコードがあるか確認します

  2. そうでない場合は、レコード

  3. を挿入します
いいねを押す +0
小葫芦

一意の制約を選択することをお勧めします:

  • アプリケーションロジックを簡素化します。

  • 一意性制約を確立すると、通常、システムは自動的にインデックスを作成して、クエリのパフォーマンスを向上させながら一意性を確保します。 (PostgreSQL ドキュメント)

一意制約を追加すると、制約にリストされている列または列のグループに一意の B ツリー
インデックスが自動的に作成されます。

いいねを押す +0
伊谢尔伦

作成者はデータベースの目的を理解する必要があります。2 番目のオプションに従ってデータベース システムを開発すると、データベースを直接ファイルとして保存できます。データベースは単純な SQL だけではなく、DBMS として他の多くの機能も提供するため、システムの基盤となるアクセスを最適化しながら、アプリケーションの問題の解決に集中できます。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート