Dobra, mam pytanie, naprawdę nie problem."REPLACE INTO" versus INSERT [IF]
Mam tabelę w mojej bazie danych, dość małe, tylko 3 kolumny, ale potencjał do wzrostu. Mam dwa rozwiązania mojego problemu, ale nie wiem, dlaczego użyć jednego lub drugiego.
Mam dane, które mogą, ale nie muszą być już w bazie danych. Dwa sposoby rozwiązania tego. Mam unikalny identyfikator, więc łatwo go sprawdzić.
- Sprawdź, czy zapisy istnieje w bazie danych, a jeśli nie,
INSERT INTO
bazie - Zastosowanie
REPLACE INTO
, bo mam już identyfikator.
Moje pytanie brzmi teraz. Którego lepiej użyć. Jakie są plusy i minusy w używaniu jednego z dwóch wyników. Czy jest lepszy wynik?
Uwaga: dane są dokładnie takie same, więc nie ma szans, że rekord zostanie zaktualizowany o nowszą wartość. Zatem REPLACE INTO
wstawi dane, które już tam są. Nie jest zalecane tutaj
Uważaj, 'REPLACE INTO' jest implementowane wewnętrznie jako' DELETE', a następnie 'INSERT'. Skasowanie jest zwykłym kasowaniem, co oznacza, że sprawdza klucze obce i przestrzega klauzul "ON DELETE". Najprawdopodobniej * prawdopodobnie * chcesz 'INSERT INTO ... ON DUPLICATE KEY UPDATE ...'. – Charles
Ale jaka jest tutaj najlepsza praktyka? I dlaczego –
Dodatkowo, jeśli spróbujesz zaktualizować wiersz z tymi samymi (istniejącymi) wartościami, MySQL wykryje, że wartości są takie same i pominie aktualizację, oszczędzając czas, blokady, itp. - kolejny powód użycia 'INSERT INTO ... ON DUPLICATE KEY UPDATE ... 'versus usuwanie istniejącego wiersza w pierwszej kolejności. –