insert ignore
er den bedre metode af flere grunde.
Med hensyn til ydeevne bliver kun én forespørgsel kompileret og udført i stedet for to. Dette sparer omkostningerne ved at flytte ting ind og ud af databasen.
Med hensyn til vedligeholdelse er kun én forespørgsel mere vedligeholdelsesdygtig, fordi logikken er samlet ét sted. Hvis du tilføjede en where
klausul, for eksempel, ville du være mere tilbøjelig til at gå glip af at tilføje den i to separate forespørgsler.
Med hensyn til nøjagtighed bør kun én forespørgsel ikke have nogen (eller i det mindste mange færre) muligheder for løbsforhold. Hvis en række er indsat mellem select
og insert
, så får du stadig en fejl.
Men bedre end insert ignore
er insert . . . on duplicate key update
. Sidstnævnte undgår kun fejlen for duplikeringsproblemer. insert ignore
ignorerer muligvis fejl, som du faktisk bekymrer dig om.
I øvrigt bør du alligevel tjekke for fejl fra erklæringen.