2012-12-18 25 views
12

Tôi viết thư này một theo dõi Changing data type of column in SQL Serverrơi/Vô hiệu hóa chỉ số là tốt hơn trong sql máy chủ

Câu hỏi của tôi trước đó là nếu tôi cần phải loại bỏ tất cả các chỉ số và những hạn chế và nó đã trả lời tôi cần phải loại bỏ chúng.

Vì vậy, khi tôi lướt internet về chủ đề, tôi đã xem qua một vài bài nói rằng tốt hơn là tắt và bật chỉ mục, thay vì xóa và tạo lại chúng.

Vì vậy, cách nào tốt hơn để thực hiện? Việc vô hiệu hóa chỉ mục có cho phép bạn thay đổi kiểu dữ liệu của cột không? Sự khác biệt giữa cả hai là gì?

Tuyên bố với giảm và tạo 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); 

Tuyên bố với việc vô hiệu hóa và kích hoạt chỉ số

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

Bạn có chạy tập lệnh thử nghiệm không? Bạn cũng có thể xem tài liệu hướng dẫn, cho bạn biết [các hạn chế để thay đổi một cột] (http://msdn.microsoft.com/en-us/library/ms190273.aspx) được sử dụng trong một chỉ mục và cũng là những gì [ vô hiệu hóa các chỉ mục] (http://msdn.microsoft.com/en-us/library/ms177406 (v = sql.100) .aspx). Hy vọng rằng nó là rõ ràng rằng có một sự khác biệt giữa vô hiệu hóa một cái gì đó và giảm (xóa) nó. – Pondlife

+0

@Pondlife Cảm ơn thông tin – Sam

Trả lời

5

Liệu việc vô hiệu hóa các chỉ số cho phép bạn thay đổi kiểu dữ liệu của cột không?

Nó dựa trên loại chỉ mục bạn đã chọn. Bạn không thể sửa đổi kiểu dữ liệu cột khi chỉ mục nhóm trên bảng bị tắt. Nếu chỉ mục của bạn là chỉ mục không được nhóm thì bạn có thể.

Sự khác biệt giữa cả hai là gì?

Sự khác biệt lớn nhất giữa việc vô hiệu hóa và xóa chỉ mục là liệu siêu dữ liệu và thống kê có được duy trì hay không. Nếu bị vô hiệu hóa, họ là. Nếu bị bỏ, thì không. Đảm bảo bạn cân nhắc cẩn thận các tùy chọn của mình trước khi thực hiện một trong hai hành động và luôn có cách để tạo lại chỉ mục có sẵn.

cách nào tốt hơn để thực hiện?

Trong trường hợp của bạn, tôi khuyên bạn nên thả và tạo lại các chỉ mục.

Các vấn đề liên quan