Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Der effizienteste Weg, um ein SQL 'INSERT IF NOT EXISTS' auszuführen

Die insert ignore ist aus mehreren Gründen die bessere Methode.

In Bezug auf die Leistung wird nur eine Abfrage kompiliert und ausgeführt, anstatt zwei. Dies erspart den Aufwand für das Verschieben von Daten in die und aus der Datenbank.

In Bezug auf die Wartung ist es einfacher, nur eine Abfrage zu haben, da sich die gesamte Logik an einem Ort befindet. Wenn Sie ein where hinzugefügt haben -Klausel, würden Sie es wahrscheinlicher übersehen, sie in zwei separaten Abfragen hinzuzufügen.

In Bezug auf die Genauigkeit sollte nur eine Abfrage keine (oder zumindest viel weniger) Möglichkeiten für Rennbedingungen haben. Wenn eine Zeile zwischen select eingefügt wird und insert , dann erhalten Sie immer noch eine Fehlermeldung.

Allerdings besser als insert ignore ist insert . . . on duplicate key update . Letzteres vermeidet nur den Fehler bei Duplizierungsproblemen. insert ignore könnte Fehler ignorieren, die Sie wirklich interessieren.

Übrigens sollten Sie die Anweisung sowieso auf Fehler überprüfen.