insert ignore
е по-добрият метод по няколко причини.
По отношение на производителността се компилира и изпълнява само една заявка, а не две. Това спестява режийните разходи за преместване на неща във и извън базата данни.
По отношение на поддръжката само една заявка е по-поддържана, защото логиката е на едно място. Ако сте добавили where
клауза, например, е по-вероятно да пропуснете да я добавите в две отделни заявки.
По отношение на точността, само една заявка не трябва да има (или поне много по-малко) възможности за условия на състезание. Ако между select
е вмъкнат ред и insert
, тогава пак ще получите грешка.
Въпреки това, по-добре от insert ignore
е insert . . . on duplicate key update
. Последният само избягва грешката за проблеми с дублирането. insert ignore
може да игнорирате грешки, които всъщност ви интересуват.
Между другото, така или иначе трябва да проверявате за грешки от изявлението.