"Kovalenko Dmitry" ... > > > Удаление создаёт версию записи и не трогает индексы. > > Инсерт создаёт версию записи и, конечно, трогает индексы > > Апдейт, не затрагивающий индексированные колонки, тоже > > создаёт версию записи и не трогает индексы. > > > Так что получается, что вариант с апдейтом дешевле > > в твоём случае > > > Простой эксперимент тебе поможет ;) > > Вчера провел ужасающий по своей > простоте эксперимент - провел > перестройку структуры этой ужасной > таблицы. В течении которой изменились > значения колонок в ~17 и ~25млн записях. > Сборка мусора в 25 млн записях шла чуть > больше одного часа. На нашем мегаконе.
ODS11 по вам плачет... или вы по ней ;) > Перевел программу с тупого insert (перед > ним срабатывал триггер, делающий delete) > на вызов SP, которая типа гораздо умнее. > > В результате - обновления колонок > входящих в индекс теперь вообще нет. > Удалений, собственно, тоже. > > Статистика по одной транзакции. > > None - 4839 (вообще ничего не обновлилось) > Update state - 693 (колонки вне индексов) > Insert - 3150 > > До этого "None"+"Update state" выполнялись как > "Delete"+"Insert" Вот тут ты сэкономил 2 операции в индексе, одна из которых (удаление старого ключа) на ODS < 11 весьма нетороплива > А таких транзакций от 5 до 20 (не считая > брызг). > > Полагаю, теперь индексы этой таблицы > оставлены в покое. Ура! ;) -- Хорсун Влад