sql >> データベース >  >> RDS >> Mysql

値がテーブルにすでに存在するかどうかを確認するにはどうすればよいですか?

    unique constraintを使用します 。レコードを挿入/更新して、一意の制約に違反したときにスローされる例外をキャッチしてください。これは、一意の電子メールアドレスを保証する唯一の方法です。最初にチェックしてから更新すると、他の誰かが自分のレコードを、チェックを行った直後でレコードを更新する前に設定しようとしているのと同じ値に更新する可能性があるため、同時実行の問題が発生しやすくなります。

    また、whereの使用方法を学びます。 -条項。これで、すべてのレコードを取得したり、レコードを繰り返し処理したりすることになります。これは、不必要に多くのリソースを消費し、時間がかかりすぎて、単なる無駄です。作成した基準に一致するレコードを確認する場合:

    Select foo, bar from table where baz = 123
    

    ここで、baz = 123 あなたの基準です。現在の設定に500、さらには500,000のレコードがある場合に何が起こるか想像してみてください。データベースはクエリを実行し、そのデータベースからすべての行を収集し、それらをアプリケーションに転送します。アプリケーションでは、500,000件すべての結果が繰り返されます。または、DBに得意なこと(およびそもそもなぜそれを使用しているのか)を実行するように依頼します。基準Xに一致するすべてのレコードをギミします。制約):1 =いくつかのレコードが基準に一致し、none=レコードが存在しません。転送と「手動で確認する必要がある」499,999レコードを節約します;-)




    1. INSERTで重複するエントリをサイレントに無視/削除するトリガー

    2. 別の列のフィルターに基づいて列を更新する方法

    3. MaxScaleのフェイルオーバーメカニズムの使用方法

    4. mysqli挿入-ただし、重複していない場合のみ