Mysql
 sql >> база данни >  >> RDS >> Mysql

Най-ефективният начин да направите SQL „INSERT IF NOT EXISTS“

insert ignore е по-добрият метод по няколко причини.

По отношение на производителността се компилира и изпълнява само една заявка, а не две. Това спестява режийните разходи за преместване на неща във и извън базата данни.

По отношение на поддръжката само една заявка е по-поддържана, защото логиката е на едно място. Ако сте добавили where клауза, например, е по-вероятно да пропуснете да я добавите в две отделни заявки.

По отношение на точността, само една заявка не трябва да има (или поне много по-малко) възможности за условия на състезание. Ако между select е вмъкнат ред и insert , тогава пак ще получите грешка.

Въпреки това, по-добре от insert ignore е insert . . . on duplicate key update . Последният само избягва грешката за проблеми с дублирането. insert ignore може да игнорирате грешки, които всъщност ви интересуват.

Между другото, така или иначе трябва да проверявате за грешки от изявлението.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Има ли някаква основателна причина за използване на Unix сокети през TCP/IP с mysql?

  2. Unicode Encode Error „latin-1“ Кодекът не може да кодира символ „\u2019“

  3. Реализация на MySQL с CUDA

  4. MySQL се срива (някои указатели може да са невалидни и да причинят прекратяване на изхвърлянето)

  5. Влизане на потребител с една заявка и парола за всеки потребител