申し訳ありませんが、本当に問題はありません。「REPLACE INTO」とINSERT [IF]
私のデータベースにはかなり小さいテーブルがありますが、わずか3カラムですが、成長する可能性があります。問題には2つの解決策がありますが、どちらか一方を使用する理由は不明です。
私はデータを持っています。データはデータベースに入っていてもいなくてもかまいません。これを解決する2つの方法。私はユニークなIDを持っているので、チェックするのは簡単です。私はすでにIDを持っているので、レコードが、データベースに存在し、そうでない場合、INSERT INTO
データベース
REPLACE INTO
場合
- チェック。
私の質問は今です。どちらを使うのが良いですか。 2つの結果のいずれかを使用して長所と短所は何ですか?それとも良い結果がありますか?
メモ:データはまったく同じなので、新しい値でレコードが更新されることはありません。従って、REPLACE INTO
は既に存在するデータを挿入するでしょう。
注意: 'REPLACE INTO'は内部的に' DELETE'と 'INSERT'として実装されています。削除は通常の削除です。つまり、外部キーをチェックし、 'ON DELETE'節に従います。とにかく、代わりに 'INSERT INTO ... ON DUPLICATE KEY UPDATE ...'をしたいと思うでしょう。 – Charles
しかし、ここでベストプラクティスは何ですか?また、なぜ –
(同じ)(既存の)値で行を更新しようとすると、MySQLは値が同じであることを検出し、更新をスキップして時間、ロックなどを節約します。 INTO ... DUPLICATE KEY UPDATE ... 'と比較して、既存の行を最初に削除します。 –