и попытаться заполнить его с помощью UPDATE, верно ли я понимаю, что HOT UPDATE не может быть применён (даже при условии что UPDATE не затрагивает столбцы по которым реализованы индексы, а обновляет только вышесозданный столбец), потому что в старых кортежах этого столбца нет, и придётся обязательно переписать версию строки (причём на новую страницу) а значит и обновить индексы?
upd.: тесты показывают что так и есть
Давайте по порядку. Добавление пустого столбца не приводит к перезаписи строк. Следующий апдейт на не-нулловое значение - приведёт. Но если поле не присутствует в индексах (покрывающие не рассматриваем щас) - ссылка в индексе останется на старую версию строки, в которую добавится указатель на новую, и индексы не перестроятся, для чего и нужен хот
> верно ли я понимаю, что HOT UPDATE не может быть применён Нет, неверно, насколько я помню. > upd.: тесты показывают что так и есть Может, Вы что-то напутали в тестах (или там есть какие-то другие препятствия использованию HOT)? > 2.1. Если делать UPDATE, не дропая индексы, то он происходит мучительно медленно и HOT UPDATE не используется Может, в самих индексах какая-то проблема (там что-то было на эту тему, вроде бы)? > итого получаем seek туда-сюда, что например для HDD совсем не здорово Это, например, работает совсем не так. ;) > Если дропнуть индексы, то UPDATE происходит молниеносно Ну так совсем без индексов всё и должно быть куда быстрее — их обновление далеко не бесплатное. ;(
Обсуждают сегодня