To zależy od tego, ile danych się zmienia. Powiedzmy, że ta tabela ma 20 kolumn. I masz również 5 indeksów - każdy na różnicę. kolumna.
Teraz, jeśli wartości we wszystkich 20 kolumnach się zmieniają LUB nawet jeśli dane w 5 kolumnach się zmieniają, a wszystkie te 5 kolumn są indeksowane, być może lepiej będzie „usunąć i wstawić”. Ale jeśli zmieniają się tylko 2 kolumny i powiedzmy, że nie są one częścią indeksów nieklastrowych, być może lepiej będzie „Aktualizować” rekordy, ponieważ w tym przypadku aktualizowany będzie tylko indeks klastrowany (i indeksy nie będą musiały być na bieżąco).
Podczas dalszych badań odkryłem, że powyższy komentarz jest w pewnym sensie zbędny, ponieważ SQL Server wewnętrznie ma 2 oddzielne mechanizmy do przeprowadzania UPDATE. - „Aktualizacja na miejscu” (tj. Poprzez zmianę wartości kolumn na nową w oryginalnym wierszu) lub jako „nieaktualna aktualizacja” (USUŃ, a następnie WSTAW).
Aktualizacje na miejscu są regułą i są wykonywane, jeśli to możliwe. Tutaj wiersze pozostają dokładnie w tym samym miejscu na tej samej stronie w tym samym zakresie. Tylko bajty, których to dotyczy, są dzielone. Tlog ma tylko jeden rekord (pod warunkiem, że nie ma żadnych wyzwalaczy aktualizacji). Aktualizacje odbywają się na miejscu, jeśli sterty są aktualizowane (a na stronie jest wystarczająca ilość miejsca). Aktualizacje odbywają się również w przypadku zmiany klucza klastrowania, ale wiersz wcale nie musi się przenosić.
Na przykład: jeśli masz klastrowany indeks nazwiska i masz nazwy: Able, Baker, Charlie Teraz chcesz zaktualizować Baker do Beckera. Nie trzeba przenosić rzędów. To może zająć miejsce. Natomiast jeśli musisz zaktualizować Able do Kumar, wiersze będą musiały zostać przesunięte (nawet jeśli będą na tej samej stronie). W takim przypadku program SQL Server wykona operację DELETE, a następnie INSERT.
Biorąc pod uwagę powyższe, sugeruję, abyś wykonał normalną AKTUALIZACJĘ i pozwolił SQL Serverowi znaleźć najlepszy sposób, jak to zrobić wewnętrznie.
Aby uzyskać więcej informacji na temat elementów wewnętrznych „UPDATE” lub, jeśli chodzi o wszelkie elementy wewnętrzne związane z SQL Server, sprawdź książkę Kalen Delaney, Paula Randala i innych - SQL Server 2008 Internals .