Trong cơ sở dữ liệu của chúng tôi, có một bảng lớn tồn tại ít nhiều trông như thế này:
CREATE TABLE dbo.production_data
(
pd_id BIGINT PRIMARY KEY,
serial NVARCHAR(16) NOT NULL UNIQUE,
...
);
nhưng bây giờ kích thước của trường nối tiếp đã trở nên thấp, vì vậy tôi muốn thay đổi nó thành 32. Công cụ so sánh lược đồ Visual Studio gợi ý thực hiện điều này bằng cách:
DROP INDEX ux_production_data_serial ON dbo.production_data;
GO
ALTER TABLE dbo.production_data ALTER COLUMN serial NVARCHAR(32) NOT NULL;
GO
CREATE INDEX ux_production_data_serial ON dbo.production_data(serial ASC);
Đây có thực sự cần thiết? Hoặc giống như một cách cực kỳ tiết kiệm để làm điều này?
Ngoài ra khi tạo lại chỉ mục duy nhất, bảng của tôi có bị khóa không? Bởi vì đây sẽ là một vấn đề lớn (vì bảng có 30 triệu hàng và tôi đoán việc tạo lại chỉ mục sẽ mất khá nhiều thời gian), bởi vì cửa sổ bảo trì tiếp theo là một vài tháng trong tương lai. Lựa chọn thay thế của tôi là gì?