Mam dość duży stół: ponad 20 milionów wierszy i muszę zaktualizować około 5% tego - lub 1 milion wierszy.Jak przyspieszyć masywną aktualizację do kolumny w klastrze?
Niestety, aktualizuję kolumnę (int), która jest używana jako indeks klastrowany.
Moje pytanie brzmi: Jaki jest najszybszy sposób aktualizacji tych wierszy?
Próbowałem aktualizacji wierszy bezpośrednio:
update t1
set t1.groupId = t2.groupId
from
table t1
join newtable t2 on t1.email = t2.email
ale to trwa zbyt długo (I zatrzymał go po 3 godzinach)
Przypuszczam, że to dlatego, że cały rząd (który ma 2 datetimes, 2 varchars i 2 ints) są przenoszone po każdej aktualizacji.
Co zrobić, jeśli najpierw usunięto indeks klastrowy, a następnie zaktualizowano, a następnie ponownie utworzono indeks klastrowy? Czy to byłoby szybciej?
Uwaga: Mam indeks klastrowy w wiadomościach e-mail, w przypadku, gdy ktoś uważa, że jest to wybrana część zapytania, która jest wolna. To nie jest.
Myślę, że odpowiedziałeś na własne pytanie. Oprócz upuszczenia indeksu klastrowanego można również upuścić inne indeksy i odtworzyć je po zakończeniu aktualizacji. –