Допустим, у вас есть таблица с примерно 5 миллионами записей и столбец nvarchar(max)
, заполненный большими текстовыми данными. Вы хотите установить этот столбец NULL
, если SomeOtherColumn = 1
самым быстрым способом.
Ломаная сила UPDATE
здесь не работает, потому что она создаст большую неявную транзакцию и займет вечность.
Выполнение обновлений в небольших партиях 50 тыс. записей за один раз работает, но по-прежнему занимает 47 часов, чтобы завершить работу на 32-битном 32-гигабитном сервере.
Есть ли способ сделать это обновление быстрее? Есть ли какие-либо волшебные подсказки/параметры таблицы, которые жертвуют чем-то другим (например, concurrency) в обмен на скорость?
ПРИМЕЧАНИЕ. Создание столбца temp или столбца temp не является опцией, потому что этот столбец nvarchar(max)
содержит много данных и поэтому потребляет много места!
PS: Да, SomeOtherColumn
уже проиндексирован.