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.