insert ignore
je lepší metoda z několika důvodů.
Z hlediska výkonu se kompiluje a spouští pouze jeden dotaz, nikoli dva. To ušetří režii přesunu věcí do az databáze.
Z hlediska údržby je lépe udržovat pouze jeden dotaz, protože logika je vše na jednom místě. Pokud jste přidali where
například klauzule, pravděpodobně byste ji vynechali přidáním do dvou samostatných dotazů.
Pokud jde o přesnost, pouze jeden dotaz by neměl mít žádné (nebo alespoň mnohem méně) příležitostí pro podmínky závodu. Pokud je mezi select
vložen řádek a insert
, pak se stále zobrazí chyba.
Nicméně lepší než insert ignore
je insert . . . on duplicate key update
. Ten se pouze vyhne chybám pro problémy s duplikací. insert ignore
možná ignoruje chyby, které vás skutečně zajímají.
Mimochodem, stejně byste měli kontrolovat chyby z výpisu.