ホームページ >データベース >mysql チュートリアル >重複キー処理を使用して MySQL でアップサートを効率的に実行するにはどうすればよいですか?

重複キー処理を使用して MySQL でアップサートを効率的に実行するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-08 13:41:111012ブラウズ

How Can I Efficiently Perform Upserts in MySQL with Duplicate Key Handling?

重複キー更新のための効率的な Upsert クエリ

一意のインデックスを持つ MySQL テーブルにデータを挿入する場合、多くの場合、既存のインデックスを更新する必要があります。キーがすでに存在するかどうかを記録します。これを実現するには、通常、変更するフィールドを指定する「ON DUPLICATE KEY UPDATE」句が使用されます。ただし、すべてのフィールドを再度指定するのは非効率的になる可能性があります。

代替構文

より簡単な方法は、次に示すように VALUES() 関数を使用することです。

INSERT INTO table (id,a,b,c,d,e,f,g) VALUES (1,2,3,4,5,6,7,8) 
ON DUPLICATE KEY UPDATE a=VALUES(a),b=VALUES(b),c=VALUES(c),d=VALUES(d),e=VALUES(e),f=VALUES(f),g=VALUES(g);

この構文では、各フィールドを 2 回指定する必要がなくなり、クエリがより複雑になります。 concise.

更新の回避を検討する

フィールドがすでに持っているのと同じ値で更新する必要がないことに注意することが重要です。既存のレコードに挿入と同じデータがすでに含まれている場合は、更新を実行する必要はありません。次の構文を使用すると、不必要な更新を防ぐことができます。

INSERT INTO table (id,a,b,c,d,e,f,g)
VALUES (1,2,3,4,5,6,7,8) 
ON DUPLICATE KEY
    UPDATE a=a, b=b, c=c, d=d, e=e, f=f, g=g;

最後の挿入 ID の取得

新しく挿入または更新されたレコードの ID を取得するには、構文は、使用されているバックエンド アプリによって異なります。たとえば、LuaSQL では、 conn:getlastautoid() 関数を使用して値を取得できます。

以上が重複キー処理を使用して MySQL でアップサートを効率的に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。