Я не согласен с тем, что вы всегда должны перестраивать свою статистику после большого количества удалений или вставок. Как всегда, это зависит. В ситуации с хранилищем данных при повторном построении ваших материализованных представлений вы будете выполнять множество удалений и вставок, но базовая структура данных не изменится.
Пересчитывать статистику таблицы нужно только в том случае, если в ее содержимом произошло существенное изменение. Это не обязательно означает после большого количества удалений или вставок, а скорее, когда удаления, вставки или обновления существенно изменяют содержимое относительно возможных планов выполнения.
Если вы усекаете таблицы и перестраиваете (что приведет к сбросу вашей статистики), вместо дорогостоящего вычисления статистики вам часто лучше сохранять статистику перед усечением и восстанавливать ее после перестроения таблицы.
Для сохранения текущих просмотров статистики вы используете:
dbms_stats.export_table_stats
, а затем для их восстановления вы используете:
dbms_stats.import_table_stats
(Существуют соответствующие процедуры для schema
и database
.)