Niedawno zaktualizowałem do wersji MSSQL 2008 R2 i zastanawiałem się, czy "nowa" funkcja Merge była wydajniejsza/szybsza niż skracanie i wstawianie do aktualizacji tabel, ponieważ każda tabela ma miliony wierszy. Jeśli ktokolwiek mógłby podać jakieś dane dotyczące ich wydajności, byłoby świetnie, ale jakiekolwiek wyjaśnienie byłoby pomocne!MERGE vs TRUNCATE i INSERT
Odpowiedz
Nie jestem pewien, czy poprawnie podałem twój punkt TRUNCATE
i INSERT
. Jeśli nie, to możesz mnie poprawić.
MERGE
jest rozumiany jako mechanizm służący do wykonania albo UPDATE
do istniejącego wiersza, albo w przypadku, gdy istniejący wiersz nie zostanie znaleziony, INSERT
.
Sugerujesz: TRUNCATE
i INSERT
, które usuwają użycie funkcji MERGE, ponieważ wszystko byłoby INSERT. Nie mam pojęcia, czy MERGE
w tym przypadku byłby szybszy, czy nie, ponieważ nigdy go nie wypróbowałem, ale przypuszczam, że część MERGE
, która określa, czy używać UPDATE
lub INSERT
, nakłada pewne koszty .
Zastanawiam się, czy używać MERGE zamiast TRUNCATE i INSERT, nie obu. Przepraszam za zamieszanie. –
Cześć Kevin. Być może źle napisałem. Podobnie jak w przypadku TR3, założyłem również, że próbujesz kopiować dane z jednej tabeli do drugiej. Jeśli tak jest, to trzymałbym się 'TRUNCATE' i' INSERT', ponieważ zakładam, że część "MERGE", która weryfikuje, czy użyć 'UPDATE', dodaje narzut. Jeśli szukasz prostego sposobu na sklonowanie pojedynczego stolika, możesz spróbować spojrzeć na to pytanie SO: Jak zrobić codzienne zdjęcia stołu - http://stackoverflow.com/questions/8813808/how-to-take-daily-snapshot-of-a-table – SchmitzIT
Użyłem MERGE
ponieważ musiałem śledzić zmiany danych (zachowałem sumę kontrolną wierszy), ale ponieważ wydaje się, że po prostu potrzebujesz tych danych "sklonowanych" za każdym razem, nie widzę żadnego konkretnego powodu, aby użyć MERGE
, po wszystkim MERGE
robi jakieś rodzaje kontroli (jest kontrola kluczy głównych i dodatkowe warunki są umieszczane na każdym WHEN
); za pomocą TRUNCATE
a potem większość INSERT
nie powinien mieć wszystko, że warunki w sztuce
przy okazji nie brać tego jako 100% prawdziwe, nie mam żadnego testu wydajności do wniesienia jako dowód; Proponuję wypróbować obie operacje i zobaczyć, który z nich zajmuje więcej czasu =)
- 1. Oracle MERGE nie INSERT
- 2. Concat VS Merge operaror
- 3. Git - Merge vs rebase
- 4. .NET Entity Framework Insert vs Bulk Insert
- 5. UPDATE vs INSERT performance
- 6. bzr pull vs bzr merge
- 7. Sql bulk insert/update vs MERGE w scenariuszu wstawiania lub aktualizacji
- 8. mysql innodb vs myisam insert
- 9. MongoDB: Update/Upsert vs Insert
- 10. EF vs Nhibernate Merge Disconnected Object Graph
- 11. Szyny Truncate i raw nie działają razem
- 12. Dlaczego php: // input truncate?
- 13. Truncate Table Within Transaction
- 14. QPlainTextEdit truncate history linewise
- 15. Merge Data i czas
- 16. Wydajność Oracle i JDBC: INSERT ALL vs preparedStatement.addBatch
- 17. bc truncate zmiennoprzecinkowych numer
- 18. jquery truncate plugin
- 19. Merge wkładka z select
- 20. Tekst Android TextView Truncate Behavior
- 21. MERGE Naruszenie klucz podstawowy
- 22. git merge vs rebase za pomocą git svn
- 23. Różnica między ciągiem git. master vs git merge master
- 24. różnice między INSERT select i insert into select?
- 25. truncate i pad użyciu specyfikacji formatu mini język
- 26. jaki sposób za pomocą TRUNCATE TABELA wpłynąć indeksów
- 27. Merge i zmiennej do zmiennej z SASS
- 28. Używanie polecenia MERGE INTO z identyfikatorem Scope_IDENTITY
- 29. Potrzebujesz pomocy z instrukcją Merge
- 30. C# Merge Two SortedLists (Union?)
To zależy od liczby rzędów, które musisz dodać. Prawdopodobnie istnieje wartość progowa, w której czas wykonania jest taki sam dla 'merge' i' truncate ... insert'. –
Nie zapominaj, że 'TRUNCATE' zresetuje twoje" bieżące "wartości tożsamości, podczas gdy będą one zachowane przy użyciu scalania. –