Какая польза от & ldquo; lenient & rdquo;?

Кстати, мне пришлось сделать что-то очень похожее около 3 часов назад. Таблица была 35 м строк, она довольно широкая, и на это всегда приходилось делать это:

alter table myTable add myNewColumn int not null default 0;

Вот что я в итоге перешел с:

alter table myTable add myNewColumn int null;

while 1=1
begin
    update top (100000) myTable
    set
        myNewColumn = 0
    where
        myNewColumn is null;

    if @@ROWCOUNT = 0 break;
end

alter table myTable alter column myNewColumn int not null;
alter table myTable add constraint tw_def_myNewColumn default (0) for myNewColumn;

На этот раз операторы alter table были почти мгновенными. Для выполнения пакетов обновления потребовалось около 7-8 минут (на медленном сервере). Я предполагаю, что SQL Server генерирует отмену в моем исходном запросе для восстановления значений, но я не ожидал, что это начнется.

В любом случае, возможно, что-то подобное поможет. Вы можете попробовать добавить новый столбец bigint, обновить новый столбец партиями, а затем установить ограничения на него.

56
задан Soumitri Pattnaik 29 June 2016 в 12:09
поделиться