私のアプリケーションは重複した主キー データを挿入する可能性があります。最も効率的な方法は何でしょうか。挿入する前にキーが既に存在するかどうかを確認するか、それとも単に挿入して銀行にエラーを返してから処理させるのが最も効率的でしょうか?どちらが影響が少ないでしょうか? ありがとう###
P粉3620719922024-03-29 07:32:06
最も効率的な方法は、ON DUPLICATE KEY UPDATE
句を指定した INSERT
クエリを使用することです。
主キーが存在しない場合は、新しいレコードが挿入されます。主キーがすでに存在する場合は、主キー レコードの指定されたフィールドのみが更新されます (エラーはスローされません)。
たとえば、user_id
が存在しない場合、次のコードは新しいユーザーを作成します。 user_id
が存在する場合にのみ、last_visited_date
が更新されます。
このアプローチにより、1 つのクエリで新しいレコードの作成と既存のレコードの更新が可能になり、既存の主キーを確認する必要がなくなります。
注: 主キーが自動インクリメントインデックスの場合、MySQL は ON DUPLICATE UPDATE
句を INSERT
クエリと同じように扱うため、次の ID がインクリメントされます。 by < code>1 主キーがすでに存在している限り。
ON DUPLICATE KEY UPDATE
句を使用したくない場合は、既存の主キーのエラーを捕捉することが最もパフォーマンスの高いアプローチになります。