2012-12-18 16 views
12

Piszę to kontynuacją Changing data type of column in SQL Serverspada/wyłączanie wskaźnik jest lepszy serwer sql

wcześniej było moje pytanie, czy muszę usunąć wszystkie indeksy i ograniczeń, a to odpowiedział mi trzeba je usunąć.

Tak jak surfowałem po Internecie na ten temat natknąłem się na kilka postów mówiących, że lepiej jest wyłączyć i włączyć indeks, zamiast je usuwać i ponownie tworzyć.

Co jest lepszym sposobem na zrobienie tego? Czy wyłączenie indeksu pozwala również zmienić typ danych kolumny? Jaka jest różnica między oboma?

komunikat z usuwania i tworzenia indeksu

DROP INDEX UX_1_COMPUTATION ON dbo.Computation 

ALTER TABLE dbo.Computation 
ALTER COLUMN ComputationID NVARCHAR(25) not null 

CREATE UNIQUE INDEX UX_1_COMPUTATION ON dbo.Computation (ComputationID); 

komunikat z wyłączanie i włączanie Indeks

ALTER INDEX [UX_1_COMPUTATION ] ON dbo.Computation DISABLE 

ALTER TABLE dbo.Computation 
ALTER COLUMN ComputationID NVARCHAR(25) not null 

ALTER INDEX [UX_1_COMPUTATION ] ON dbo.Computation REBUILD; 
+4

Czy uruchomiłeś skrypt testowy? Możesz również rzucić okiem na dokumentację, która mówi ci o [ograniczeniach dotyczących zmiany kolumny] (http://msdn.microsoft.com/en-us/library/ms190273.aspx) używanych w indeksie oraz o tym, co [ wyłączanie indeksów] (http://msdn.microsoft.com/en-us/library/ms177406 (v = sql.100) .aspx) robi. Mam nadzieję, że jest oczywiste, że istnieje różnica między wyłączeniem czegoś a upuszczeniem (usunięciem). – Pondlife

+0

@Pondlife Dzięki za informacje – Sam

Odpowiedz

5

Czy wyłączenie z indeksu pozwalają zmienić typ danych kolumny, jak również?

Oparta jest na wybranym typie indeksu. Nie można zmodyfikować typu danych kolumny, gdy indeks klastrowany w tabeli jest wyłączony. Jeśli Twój indeks jest indeksem niesklasyfikowanym, możesz to zrobić.

Jaka jest różnica między oboma?

Największa różnica między wyłączeniem i zrzuceniem indeksu polega na tym, że metadane i statystyki są zachowywane. Jeśli są wyłączone, są. Jeśli zostaną upuszczone, nie są. Upewnij się, że dokładnie rozważyłeś opcje przed wykonaniem dowolnej akcji i zawsze masz sposób na odtworzenie dostępnego indeksu.

co jest lepszym sposobem na zrobienie tego?

W twoim przypadku proponuję upuścić i ponownie utworzyć indeksy.