Информация об изменениях

Сообщение Поиск по NULL при обновлении таблицы от 13.02.2021 13:40

Изменено 13.02.2021 13:44 Буравчик

Поиск по NULL при обновлении таблицы
В таблице много записей. Добавлена новая колонка со значением NULL.

Нужно присвоить новое значение этой колонке в каждой строке. Для этого батчами, много раз, выполняется следующий код:
UPDATE TOP(100000) table
SET col = value
WHERE col IS NULL


Как это ускорить?

Правильно ли я понимаю, что при каждом выполнении такого кода будет выполнять скан по всей таблице, пока не найдутся NOT NULL значения. Т.е. по мере обновления таблицы скорость будет замедляться. Грубо говоря сложность обновления всех записей таблицы O(N^2)

Что произойдет, если добавить индекс по колонке col — индекс для поиска NULL? Ускорится выполнение обновления за счет быстрого поиска NULL, или замедлится за счет постоянного обновления индекса при обновлении таблицы?
Поиск по NULL при обновлении таблицы
В таблице много записей. Добавлена новая колонка со значением NULL.

Нужно присвоить новое значение этой колонке в каждой строке. Для этого много раз выполняется следующий код:
UPDATE TOP(100000) table
SET col = value
WHERE col IS NULL


Как это ускорить?

Правильно ли я понимаю, что при каждом выполнении такого кода будет выполнять скан по всей таблице, пока не найдутся NOT NULL значения. Т.е. по мере обновления таблицы скорость будет замедляться. Грубо говоря сложность обновления всех записей таблицы O(N^2)

Что произойдет, если добавить индекс по колонке col — индекс для поиска NULL? Ускорится выполнение обновления за счет быстрого поиска NULL, или замедлится за счет постоянного обновления индекса при обновлении таблицы?