複数の列で効率的な UPSERT を実行する方法
UPSERT (重複更新時に挿入) を使用してデータベース テーブルにデータを挿入または更新すると、次のことが可能になります。共通のタスクになります。ただし、更新ステートメントで複数の列を操作する場合は、パフォーマンスと保守性を考慮することが重要です。
UPSERT での複数の列の処理
この例では、次のことを目的としています。 item テーブルに行を挿入または更新し、行が存在する場合は items_in_stock 値をインクリメントします。更新部分でサブクエリを使用する最初のアプローチは論理的に見えるかもしれませんが、不必要な複雑さが生じます。
簡潔な更新ステートメントを優先する
より良いアプローチは、サブクエリを使用しないことです。更新ステートメント。代わりに、更新された列の古い値と新しい値を参照する MySQL の機能を利用します。これにより、簡潔で効率的な更新ステートメントを作成できます。
MySQL の値参照を使用した例
次の UPSERT ステートメントを考えてみましょう。
INSERT INTO `item` (`item_name`, `items_in_stock`) VALUES( 'A', 27) ON DUPLICATE KEY UPDATE `items_in_stock` = `items_in_stock` + 27;
Inこの例では、新しい items_in_stock 値を前の値に追加することで items_in_stock 値が更新されます。 MySQL は古い items_in_stock 値を自動的に参照するため、サブクエリの必要がなくなります。
このアプローチの利点:
常にシンプルさを考慮する
最も効果的なソリューションは、多くの場合、最も単純なものであることを忘れないでください。問題が複雑になりすぎる場合は、間違ったアプローチをとっている可能性があります。シンプルさを採用し、データベース操作のための効率的で保守可能なソリューションを追求してください。
以上がMySQL で複数の列を使用して UPSERT を効率的に行うにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。