3

Web サイトに mysql REPLACE INTO 構文を使用しています。以下は私のテストテーブル構造です、

id  name  address
1   Tom   US
2   Dick  UK
3   Harry US
4   Jony  Spain

クエリ:

REPLACE INTO table_name VALUES (3, 'Roni', 'India')

このクエリmysqlを実行すると、

2 行が影響を受けました。挿入された行 ID: 4 (クエリには 0.0003 秒かかりました)

上記のテキストの意味を説明できる人はいますか? なぜ2行が影響を受けるのですか?

よろしく

4

4 に答える 4

2

REPLACE INTO はキーの衝突で DELETE を実行し、次に INSERT を実行するため、2 つの行が影響を受けます。そのため、最初に DELETE (影響を受ける 1 行) と次に INSERT (影響を受ける 2 行目) の 2 つの操作が発生します。

インデックスを更新する必要があるため、DELETE はコストがかかるため、他のソリューションを検討することをお勧めします。多くの場合、INSERT ... on DUPLICATE KEY UPDATE ベースのクエリの方が高速です。

于 2013-02-07T08:44:32.237 に答える
1

次のように、MySQL REPLACE like UPDATE ステートメント:

REPLACE INTO table_name SET column_name1 = value1 AND column2 = value2
于 2013-02-07T08:55:13.570 に答える
0

次のようにクエリを使用します。

EXPLAIN REPLACE INTO table_name VALUES (3, 'Roni', 'India')

「EXPLAIN」キーワードの追加に注意してください。このようにして、MySQL は何が起こっているのかを説明します。

ただし、REPLACE INTO は INSERT INTO と同じですが、存在する場合は行を置き換え、存在しない場合は挿入することに注意してください。したがって、存在する場合、行を削除してから新しい行を挿入します。そのため、2 つの行が影響を受けています。

于 2013-02-07T08:48:45.623 に答える
0

あなたの場合、ID no 3 が削除されてから再度挿入されたように見えます。そのため、2 つのレコードが影響を受けると表示されます。あなたのテーブルには行 3 があり、Roni と India が挿入され、行 3 が削除されている可能性があります,Harry,US

于 2013-02-07T09:00:58.623 に答える