Не может удалить раздел индекса Oracle - какая-либо альтернатива, кроме удаления всего индекса и перестроения? - PullRequest
1 голос
/ 13 января 2011

Итак, у меня есть программа .NET, выполняющая пакетную загрузку записей в секционированные таблицы с использованием вызовов хранимых процедур с привязкой к массиву через Oracle ODP.NET, но это ни здесь, ни там.

Что я хотел бы знатьэто потому, что у меня есть секционированный индекс на указанных таблицах, скорость пакетной загрузки довольно низкая.Я полностью понимаю, что не могу удалить раздел индекса, но я бы предпочел не удалять и перестраивать весь индекс, поскольку для его выполнения потребуется значительно больше времени.Это мой единственный выход?

Есть ли довольно простой способ удалить сам раздел, а затем перестроить раздел и раздел индекса, что сэкономило бы время и позволило бы достичь моей цели?

1 Ответ

1 голос
/ 13 января 2011

Загружаете ли вы весь раздел одновременно? Или вы просто добавляете новые строки в существующий раздел? Все ли индексы распределены по таблице?

Обычно, если вы загружаете данные в многораздельную таблицу, ваша схема разбиения выбирается так, чтобы каждая загрузка помещала данные в новый раздел. Если это так, вы можете использовать обмен разделами для загрузки данных. Короче говоря, вы загружаете данные в (неиндексированную) промежуточную таблицу, структура которой соответствует реальной таблице, вы создаете индексы, соответствующие индексам реальной таблицы, а затем делаете

ALTER TABLE partitioned_table
  EXCHANGE PARTITION new_partition_name
  WITH TABLE staging_table_name
  WITHOUT VALIDATION;
...