2012-12-18 5 views
12

ich das früher war ein Follow-up zu Changing data type of column in SQL ServerDropping/index Deaktivieren ist besser in SQL Server

Meine Frage schreibe, wenn ich alle Indizes und Einschränkungen entfernen müssen und es war, antwortete ich sie brauche zu entfernen.

So wie ich Surf-Internet zu dem Thema war ich stieß auf ein paar Post sagen, es ist besser zu deaktivieren und aktivieren Sie einen Index, anstatt sie zu entfernen und neu zu erstellen.

Also was ist der bessere Weg, es zu tun? Ermöglicht die Deaktivierung des Indexes auch, den Datentyp der Spalte zu ändern? Was ist der Unterschied zwischen beiden?

Statement mit Abwurf und Erstellen von Index

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); 

Statement mit Sperren und Freigeben Index

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

Haben Sie Ihr Testskript ausgeführt? Sie können sich auch die Dokumentation ansehen, die Ihnen die [Einschränkungen für das Ändern einer Spalte] (http://msdn.microsoft.com/en-us/library/ms190273.aspx), die in einem Index verwendet werden, und auch was [ Deaktivieren von Indizes] (http://msdn.microsoft.com/en-us/library/ms177406 (v = sql.100) .aspx) tut. Hoffentlich ist es offensichtlich, dass es einen Unterschied zwischen dem Deaktivieren und Löschen (Löschen) gibt. – Pondlife

+0

@Pondlife Danke für die Info – Sam

Antwort

5

Deaktivierung des Index ermöglicht es Ihnen, den Datentyp der Spalte als auch zu ändern?

Es basiert auf dem von Ihnen gewählten Indextyp. Sie können einen Spaltendatentyp nicht ändern, wenn ein gruppierter Index für die Tabelle deaktiviert ist. Wenn Ihr Index ein nicht gruppierter Index ist, können Sie dies tun.

Was ist der Unterschied zwischen beiden?

Der größte Unterschied zwischen dem Deaktivieren und dem Löschen eines Index besteht darin, ob die Metadaten und Statistiken beibehalten werden. Wenn deaktiviert, sind sie. Wenn sie fallengelassen werden, sind sie es nicht. Stellen Sie sicher, dass Sie Ihre Optionen sorgfältig abwägen, bevor Sie eine Aktion ausführen, und haben Sie immer eine Möglichkeit, den verfügbaren Index neu zu erstellen.

was ist der bessere Weg?

In Ihrem Fall würde ich vorschlagen, Indizes zu löschen und neu zu erstellen.

Verwandte Themen