De insert ignore
is om verschillende redenen de betere methode.
Wat de prestaties betreft, wordt er slechts één query gecompileerd en uitgevoerd in plaats van twee. Dit bespaart de overhead van het verplaatsen van dingen in en uit de database.
In termen van onderhoud is slechts één query beter onderhoudbaar, omdat de logica allemaal op één plek staat. Als je een where
. hebt toegevoegd U zou bijvoorbeeld eerder een clausule overslaan om deze in twee afzonderlijke zoekopdrachten toe te voegen.
In termen van nauwkeurigheid zou slechts één zoekopdracht geen (of in ieder geval veel minder) kansen voor race-omstandigheden moeten hebben. Als een rij wordt ingevoegd tussen de select
en insert
, dan krijg je nog steeds een foutmelding.
Echter, beter dan insert ignore
is insert . . . on duplicate key update
. De laatste vermijdt alleen de fout voor duplicatieproblemen. insert ignore
misschien negeert u fouten waar u echt om geeft.
Trouwens, je zou hoe dan ook moeten controleren op fouten in de verklaring.