Нещодавно я додав бітовий стовпець, що підтримує NULL, до таблиці, що має близько 500 мільйонів рядків. У стовпці немає за замовчуванням, проте всі вставки вказують значення 0 або 1, і я запустив одноразову процедуру, щоб призначити 0 або 1 всім існуючим рядкам (оновлення рядків невеликими партіями). Кожен рядок повинен мати 0 або 1 у цьому стовпці.
Я хочу зробити бітовий стовпчик ненульовим, проте коли я спробував це зробити через ALTER TABLE t1 ALTER COLUMN c1 bit not null
, він почав працювати протягом 3 хвилин, і я зупинив його, оскільки він блокував усі записи до таблиці, і я підозрював, що це займе багато часу для завершення . Можливо, це займе не так довго, але я не міг ризикувати занадто сильно. Сам відкат зайняв 6 хвилин.
Чи є у вас пропозиції щодо того, як я можу зробити стовпчик ненульовим, не потребуючи часу на його завершення? Окрім того, чи є можливість оцінити, скільки часу ALTER TABLE ALTER COLUMN
заява, яку я почала та потім скасувала, потребуватиме завершення?
Я використовую веб-версію SQL Server 2017.
SELECT c1, count(*) FROM t1 GROUP BY c1
що запустив близько 9 хвилин. ПісляALTER TABLE ALTER COLUMN
закінчення фактичної заяви було потрібно 25 хвилин. Не дуже погано.