최근에 5 억 행에 가까운 테이블에 NULL 가능 비트 열을 추가했습니다. 열에는 기본값이 없지만 모든 삽입은 0 또는 1의 값을 지정하고 1 회 반복하여 모든 기존 행에 0 또는 1을 할당합니다 (작은 배치로 행 업데이트). 모든 행은 이제 해당 열에 0 또는 1이 있어야합니다.
비트 열을 Nullable로 만들려고하지만을 통해 시도했을 때 ALTER TABLE t1 ALTER COLUMN c1 bit not null
3 분 동안 실행되기 시작했고 테이블에 대한 모든 읽기를 차단하고 있기 때문에 중지했으며 완료하는 데 시간이 오래 걸릴 것으로 의심되었습니다 . 시간이 오래 걸리지 않을 수는 있지만 사용하지 못할 위험이 너무 큽니다. 롤백 자체는 6 분이 걸렸습니다.
완료하는 데 몇 시간이 걸리지 않고 열을 널 입력 불가능하게 만드는 방법에 대한 제안이 있습니까? 또한 ALTER TABLE ALTER COLUMN
내가 시작하고 취소 한 진술이 완료되는 데 걸리는 시간을 추정 할 수있는 방법이 있습니까?
SQL Server 2017 Web Edition을 사용하고 있습니다.
SELECT c1, count(*) FROM t1 GROUP BY c1
하는 데 약 9 분이 걸렸습니다. 그ALTER TABLE ALTER COLUMN
후의 실제 진술은 완료하는 데 25 분이 걸렸습니다. 나쁘지 않아.