Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Najbardziej wydajny sposób wykonania polecenia SQL „WSTAW JEŚLI NIE ISTNIEJE”

insert ignore jest lepszą metodą z kilku powodów.

Pod względem wydajności kompilowane i wykonywane jest tylko jedno zapytanie, a nie dwa. Oszczędza to narzutu związanego z przenoszeniem danych do iz bazy danych.

Jeśli chodzi o konserwację, tylko jedno zapytanie jest łatwiejsze w utrzymaniu, ponieważ cała logika jest w jednym miejscu. Jeśli dodałeś where na przykład, bardziej prawdopodobne jest, że nie dodasz go w dwóch oddzielnych zapytaniach.

Pod względem dokładności tylko jedno zapytanie nie powinno mieć (lub przynajmniej znacznie mniej) możliwości wystąpienia warunków wyścigu. Jeśli wiersz zostanie wstawiony między select i insert , nadal będzie się pojawiał błąd.

Jednak lepsze niż insert ignore to insert . . . on duplicate key update . Ten ostatni pozwala tylko uniknąć błędów związanych z problemami z duplikacją. insert ignore może ignorować błędy, na których naprawdę Ci zależy.

Przy okazji, powinieneś i tak sprawdzić, czy w instrukcji nie ma błędów.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. podany argument nie jest prawidłowym zasobem wynikowym MySQL

  2. Emulacja TO_SECONDS() w starszych wersjach MySQL (<5.5.0)

  3. jak zablokować niektóre wiersze, ponieważ nie są wybierane w innej transakcji?

  4. Jak WSTAWIĆ rekord lub UAKTUALNIĆ, jeśli już istnieje?

  5. Jak przechowywać tablice w MySQL?