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.