"ERSETZEN Sie IN" versus EINFÜGEN [WENN]

Gut, ich habe eine Frage, die nicht wirklich ein Problem.

Habe ich eine Tabelle in meine Datenbank, ziemlich klein, nur 3 Spalten, aber Potenzial zu wachsen. Ich habe zwei Lösungen für mein problem, aber nicht sicher, warum die eine oder die andere.

Habe ich ein Stück von Daten, die möglicherweise oder möglicherweise nicht bereits in der Datenbank. Zwei Möglichkeiten, um dieses Problem zu lösen. Ich habe die eindeutige ID, so ist es leicht zu überprüfen.

  1. Überprüfen, ob die Datensätze in der Datenbank existiert, und wenn nicht, INSERT INTO Datenbank
  2. Verwenden REPLACE INTO, denn ich habe die ID bereits.

Meine Frage ist jetzt. Welches ist besser zu bedienen. Was sind die vor-und Nachteile, entweder unter Verwendung der Ergebnisse der 2. Oder gibt es ein besseres Ergebnis?

Einen Hinweis, die Daten exakt die gleichen sind, so gibt es keine chance der Datensatz wird aktualisiert, mit einem neuen Wert. So ist die REPLACE INTO wird das einfügen von Daten, die bereits vorhanden ist.

  • Watch out, REPLACE INTO umgesetzt wird intern als DELETE und dann ein INSERT. Das löschen ist eine normale löschen, was bedeutet, es wird geprüft, Fremdschlüssel und gehorchen ON DELETE Klauseln. Sie wollen wahrscheinlich INSERT INTO ... ON DUPLICATE KEY UPDATE ... statt sowieso.
  • Aber, was ist die best practice hier? Und warum
  • Darüber hinaus, wenn Sie versuchen, eine Zeile zu aktualisieren mit dem gleichen (vorhandenen) Werte, MySQL erkennt, dass die Werte identisch sind und überspringt das update, Zeit zu sparen, sperren, etc.--ein weiterer Grund für die Verwendung INSERT INTO...ON DUPLICATE KEY UPDATE... versus löschen die vorhandene Zeile zuerst.
  • möglich, Duplikat der Einfügen in eine mysql-Tabelle und overwritng alle aktuellen Daten
InformationsquelleAutor Rene Pot | 2012-02-13
Schreibe einen Kommentar