JavaでSQLの一意のインデックスに基づいて例外をキャッチするのが良い考えかどうか知りたいです。
「1-0 の重複エントリ」のような例外をキャッチしたい場合は、例外を処理します。それ以外の場合は、データベース テーブルに適切に挿入しますか?
JavaでSQLの一意のインデックスに基づいて例外をキャッチするのが良い考えかどうか知りたいです。
「1-0 の重複エントリ」のような例外をキャッチしたい場合は、例外を処理します。それ以外の場合は、データベース テーブルに適切に挿入しますか?
私はあなたがそれをしないと言います、2つの理由で:
トランザクションの方が簡単だと思います:
パフォーマンスの問題:
私は2回測定し、1回カットすると言います。特定のユースケースの使用法をプロファイリングします。頭のてっぺんに、データベースの使用頻度が高いシナリオを除いて、パフォーマンスは問題にならないでしょう。
その理由はSELECT
、その特定の行に対して実行すると、そのデータがデータベースキャッシュに配置され、ステートメントのインデックスで実行される挿入チェックにすぐに使用されるためです。INSERT
また、このアクセスはインデックスによって裏付けられていることを念頭に置いておくと、パフォーマンスは問題にならないという結論につながります。
しかし、いつものように、測定してください。
REPLACEコマンドを使用できます。レコードの存在に基づいて挿入/更新します。そして、そのアトミックも同様ですが、クエリ、挿入/更新はそうではありません。キー違反を検出した場合、何をしたいかによりますか?
理由がわかりません。おそらく、挿入の前にクエリを実行するよりも効率的です。ただし、エラー メッセージを認識するよりも、例外のエラー コードをキャッチする方がよいでしょう。