ホームページ >データベース >mysql チュートリアル >「ON DUPLICATE KEY UPDATE」を使用して MySQL INSERT クエリを最適化するにはどうすればよいですか?

「ON DUPLICATE KEY UPDATE」を使用して MySQL INSERT クエリを最適化するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-09 01:23:10296ブラウズ

How Can I Optimize MySQL INSERT Queries Using

「ON DUPLICATE KEY UPDATE」による INSERT クエリの最適化

MySQL データベース システムは、シナリオを処理するために「ON DUPLICATE KEY UPDATE」句を提供します。ここで、重複する主キーを持つレコードを挿入しようとすると、更新操作がトリガーされます。この記事では、この句を活用して効率的かつ簡潔な更新を実現する方法について説明します。

完全なフィールド指定による標準 INSERT

重複キーを持つレコードを挿入しようとすると、 「ON DUPLICATE KEY UPDATE」ですべてのフィールド値を指定することもできます。句:

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=2, b=3, c=4, d=5, e=6, f=7, g=8;

このアプローチでは、すべてのフィールドが正しく更新されることが保証されますが、最初の挿入ですでに提供されている値の冗長な指定が必要です。

Using Field Values from INSERT ステートメント

冗長性を避けるために、「VALUES()」を利用できます。 「ON DUPLICATE KEY UPDATE」句の構文:

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);

この構文は、insert ステートメントの元の値を参照するため、値を再度指定する必要がなくなります。

冗長な更新および LAST_INSERT_ID に関する考慮事項

既存のフィールド値が新しいフィールド値と一致する場合、MySQL は更新を実行しないことに注意してください。したがって、実際にすべてのフィールドを「ON DUPLICATE KEY UPDATE」句で指定する必要があるかどうかを検討することが重要です。

さらに、LAST_INSERT_ID() によって生成された ID を取得するには、特定のバックエンドによっては追加の処理が必要になる場合があります。使用しているアプリケーションまたはミドルウェア。場合によっては、最後に挿入された ID を取得するために、データベースに個別にクエリを実行する必要がある場合があります。

以上が「ON DUPLICATE KEY UPDATE」を使用して MySQL INSERT クエリを最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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