insert ignore
jest lepszą metodą z kilku powodów.
Pod względem wydajności kompilowane i wykonywane jest tylko jedno zapytanie, a nie dwa. Oszczędza to narzutu związanego z przenoszeniem danych do iz bazy danych.
Jeśli chodzi o konserwację, tylko jedno zapytanie jest łatwiejsze w utrzymaniu, ponieważ cała logika jest w jednym miejscu. Jeśli dodałeś where
na przykład, bardziej prawdopodobne jest, że nie dodasz go w dwóch oddzielnych zapytaniach.
Pod względem dokładności tylko jedno zapytanie nie powinno mieć (lub przynajmniej znacznie mniej) możliwości wystąpienia warunków wyścigu. Jeśli wiersz zostanie wstawiony między select
i insert
, nadal będzie się pojawiał błąd.
Jednak lepsze niż insert ignore
to insert . . . on duplicate key update
. Ten ostatni pozwala tylko uniknąć błędów związanych z problemami z duplikacją. insert ignore
może ignorować błędy, na których naprawdę Ci zależy.
Przy okazji, powinieneś i tak sprawdzić, czy w instrukcji nie ma błędów.