우리 데이터베이스에는 다음과 같은 큰 테이블이 있습니다.
CREATE TABLE dbo.production_data
(
pd_id BIGINT PRIMARY KEY,
serial NVARCHAR(16) NOT NULL UNIQUE,
...
);
그러나 이제 직렬 필드의 크기가 작아 졌으므로 32로 변경하고 싶습니다. Visual Studio 스키마 비교 도구는 다음을 수행하여 제안합니다.
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);
이것이 정말로 필요한가? 아니면이 작업을 수행하는 매우 안전한 방법입니까?
또한 고유 인덱스를 재 작성할 때 테이블이 잠길 수 있습니까? 다음 유지 관리 기간이 앞으로 몇 달이기 때문에 이것은 테이블에 3 천만 개의 행이 있고 인덱스를 다시 만드는 데 다소 시간이 걸리기 때문에 큰 문제가 될 것입니다. 내 대안은 무엇입니까?