Что такое команда для оптимизации индекса и статистики обновления для Oracle 10g и 11g? - PullRequest
5 голосов
/ 05 апреля 2010

Я загружаю большое количество строк в таблицу из файла данных CSV. Для каждых 10000 записей я хочу обновить индексы в таблице для оптимизации (обновить статистику). Любое тело скажи мне, какую команду я могу использовать? Кроме того, что эквивалентно SQL Server «UPDATE STATISTICS» в Oracle.is Статистика обновлений означает оптимизацию индекса или статистику Gatehring. Я использую Oracle 10g и 11g. Заранее спасибо.

Ответы [ 2 ]

8 голосов
/ 05 апреля 2010

Оптимизация индекса - сложный вопрос. Вы можете COALESCE индекс, чтобы удалить соседние пустые блоки, и вы можете REBUILD индекс, чтобы полностью удалить и восстановить его. По моему мнению, то, что вы, возможно, захотите сделать в течение периода загрузки данных, - сделать индексы НЕПРАВИЛЬНЫМИ, а затем, когда вы закончите, СДЕЛАТЬ их.

ALTER INDEX my_table_idx01 DISABLE;

-- run loader process

ALTER INDEX my_table_idx01 REBUILD;

Вы хотите собирать статистику только один раз, когда закончите, и это делается с помощью вызова DBMS_STATS, например:

EXEC DBMS_STATS.GATHER_TABLE_STATS ('my_schema', 'my_table');
0 голосов
/ 11 апреля 2010

Я бы порекомендовал другой подход. Я хотел бы удалить индекс (ы), загрузить данные, а затем воссоздать индекс. После включения Oracle построит хороший индекс для данных, которые вы только что загрузили. Здесь выполняются две вещи: записи будут загружаться быстрее и индекс будет перестроен с правильно сбалансированным деревом. (Примечание: будьте осторожны, если таблица действительно большая таблица, вам может потребоваться объявить временное табличное пространство для ее работы.)

drop index my_index;

-- uber awesome loading process

create index my_index on my_table(my_col1, my_col2);
...