MySQL で複数列の一意識別子を扱う場合、更新と重複の両方を効率的に処理するという課題が生じます。挿入。 「UPDATE ON DUPLICATE KEY」構文は適切なソリューションのように見えますが、機能するには一意のキーが必要です。
ただし、複数の列から複合キーを作成すると、「UPDATE ON DUPLICATE KEY」が可能になります。希望通りに機能するように。これにアプローチする方法は次のとおりです。
複合キーを作成するには、次の構文を使用します。
CREATE INDEX <index_name> ON <table_name> (<column1>, <column2>);
たとえば、複合キーを作成してみましょう。質問で言及されている 3 列のテーブルの場合:
CREATE INDEX unique_index ON my_table (col_1, col_2);
複合キーが作成されたら、'UPDATE ON DUPLICATE KEY' クエリを実行して、キー値に基づいてレコードを更新または挿入できます。構文は次のとおりです。
INSERT INTO <table_name> (col_1, col_2, col_3) VALUES ('value1', 'value2', 'value3') ON DUPLICATE KEY UPDATE col_3=col_3+1;
このクエリでは、col_1 とcol_2 の指定された値を持つレコードがすでに存在する場合、col_3 は 1 ずつ増分されます。それ以外の場合は、新しいレコードが挿入されます。
以上が複合キーは MySQL の「UPDATE ON DUPLICATE KEY」のパフォーマンスをどのように向上させることができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。