Разделение индексов Oracle

Что же происходит с индексами при разделении таблиц? Выбор за вами: можно оставить любой из индексов нетронутым (такие индексы будем называть глобальными (global index)) или же разбить его на части, соответствующие разделам таблицы локальные индексы, (local index)).

 

Что касается глобальных индексов, можно разбить их не так, как была разбита таблица. Если вы примете во внимание тот факт, что как древовидные (b-tree), так и растровые (bit-map) индексы могут использоваться одновременно, то поймете, что все может очень усложниться. Если к разделенной таблице применяется оператор SELECT, UPDATE или DELETE, то для поиска строк оптимизатор может воспользоваться различными способами:

  1. Использовать глобальный индекс (если таковой существует и его столбцы упомянуты в операторе SQL) для нахождения требуемых строк в одном или нескольких разделах.
  2. Просматривать локальный индекс для каждого раздела для определения того, содержит ли раздел искомые строки.
  3. Определить подмножество разделов, которые могут содержать искомые строки, а затем обратиться к локальным индексам этих разделов.

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

 

Особенно неприятно, когда глобальные индексы применяются по умолчанию для первичных ключей разделенной таблицы. Используйте вместо глобальных индексов локальные. Для поддержания целостности разделенных таблиц можно применять механизм уникальных локальных индексов.

Вас заинтересует / Intresting for you:

Oracle и непроцедурный доступ ...
Oracle и непроцедурный доступ ... 6670 просмотров Antoni Tue, 21 Nov 2017, 13:32:50
Работа с запросами Approximate...
Работа с запросами Approximate... 952 просмотров Андрей Васенин Mon, 29 Oct 2018, 06:40:46
Видеокурс по администрированию...
Видеокурс по администрированию... 5965 просмотров Илья Дергунов Mon, 14 May 2018, 05:08:47
Отмена сессий в Oracle (ALTER ...
Отмена сессий в Oracle (ALTER ... 5179 просмотров Stepan Ushakov Thu, 01 Nov 2018, 18:04:59

Войдите чтобы комментировать

apv аватар
apv ответил в теме #8751 12 окт 2017 13:19
Работа по проектированию и оптимизации индексов в базе данных - это искусство, определенно...