> Удаление создаёт версию записи и не трогает индексы. > Инсерт создаёт версию записи и, конечно, трогает индексы > Апдейт, не затрагивающий индексированные колонки, тоже > создаёт версию записи и не трогает индексы.
> Так что получается, что вариант с апдейтом дешевле > в твоём случае > Простой эксперимент тебе поможет ;) Вчера провел ужасающий по своей простоте эксперимент - провел перестройку структуры этой ужасной таблицы. В течении которой изменились значения колонок в ~17 и ~25млн записях. Сборка мусора в 25 млн записях шла чуть больше одного часа. На нашем мегаконе. Перевел программу с тупого insert (перед ним срабатывал триггер, делающий delete) на вызов SP, которая типа гораздо умнее. В результате - обновления колонок входящих в индекс теперь вообще нет. Удалений, собственно, тоже. Статистика по одной транзакции. None - 4839 (вообще ничего не обновлилось) Update state - 693 (колонки вне индексов) Insert - 3150 До этого "None"+"Update state" выполнялись как "Delete"+"Insert" А таких транзакций от 5 до 20 (не считая брызг). Полагаю, теперь индексы этой таблицы оставлены в покое. Ура! Таблица используется в репликации и хранит отображение внешних идентификаторов объектов на локальные идентификаторы. Коваленко Дмитрий. PS. Впервые с 97(?) года, написал в плюсовом коде "execute procedure SP(...)" и, О Боже!, получил обратно OUT-параметр (в котором говорится, что SP сделала). И оно работает! Бугагагага :))) FB CS 1.5.3 (Win 2003)