Muszę zmienić kolumnę z NOT NULL na NULL w tabeli zawierającej miliony wierszy. Próbowałem prosty
alter table Table1 ALTER COLUMN Column1 XML NULL
ale to trwa wiecznie. Oto moje pytania:
- Dlaczego tak długo trwa modyfikacja?
- Czy jest na to lepszy sposób?
źródło
sp_rename
.Podczas zmiany kolumny z NOT NULL na NULL należy dotknąć każdego wiersza, dlatego wypełnienie zajmuje tyle czasu. Nie ma sposobu, aby zajęło to mniej czasu.
źródło
Inną opcją jest utworzenie nowej kolumny z poprawną definicją do danej tabeli, zaktualizuj kolumnę danymi ze starej kolumny, a następnie upuść starą kolumnę.
Lub Możesz odnieść się do starszego postu z SE, który dotyczy podobnego problemu w kolumnie INT.
/programming/4311559/sql-server-performance-for-alter-table-alter-column-change-data-type
źródło
Jeśli otworzysz monitor aktywności SQL podczas działania polecenia, będziesz w stanie stwierdzić, czy faktycznie go przetwarza lub czy czeka na jakąś formę wyłącznej blokady tabeli.
źródło