Локальные индексы

Локальный индекс берет критерий секционирования из соответствующей таб­лицы. В нем столько же разделов, подразделов и границ, сколько и в таблице. Когда разделы в таблице добавляются, удаляются, разделяются или сливаются, соответствующим образом модифицируются и разделы индекса. Существует два типа локальных секционированных индексов:

•        с префиксом (Prefixed);

•        без префикса (Non-prefixed).

Если ключ секционирования индекса оказывается ведущим префиксом (leading prefix) индекса, индекс называется индексом с префиксом, в противном случае его называют индексом без префикса.

Локальные индексы с префиксом

В нашем примере таблица покупок секционируется по ключу времени

для этой таблицы приводится локальный индекс с префиксом, purchase_time_index. Ключом секционирования является ключ времени (timejcey), а столбцами индекса являются ключ времени и идентификатор покупателя (timejcey, customer_id). Ключ секционирования, timejcey, является префиксом ключа индекса. Следующий код SQL создает такой индекс. Схема секционирования локаль­ного индекса та же, что и для таблицы, но вы можете задать имена разделов, а также табличных пространств, в которых располагается каждый раздел.

CREATE INDEX easydw.purchase_time_index ON purchases (time_key„   customer_id)

local

(partition indexJan2002 tablespace purchases_jan2002_idx, partition indexFeb2002 tablespace purchases_feb2002_idx, partition indexMar2002   tablespace purchases_mar2002_idx   ) ;

При таком индексе, если мы захотим узнать, какие покупки сделал конкретный •покупательв январе, нам нужно будет только поискать в разделе indexJan2002.

Локальныеиндексыбезпрефикса

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

индексы и таблицы по ключу времени, чтобы легче было добавлять данные но­вых месяцев, но чтобы получить хорошую производительность обработки за­просов объемов продаж по продуктам, нам будет нужен индекс по идентифика­торам продуктов.

На рис. 3.8 показан локальный индекс без префикса для таблицы покупок по столбцу идентификатора продуктов product_id. Схема секционирования та же, что и для таблицы покупок (т. е., по столбцу time_key). Приведенный при­мер показывает, как можно создать такой индекс.

create bitmap index easydw.purchase_product_index

ON purchases  (product_id)

local

{partition indexJan2002 tablespace purchases_jan2002_idx, partition indexFeb2002 tablespace purchases_feb2002_idx, partition indexMar2002 tablespace purchases_mar2002_idx);

При таком индексе, если производить поиск объема продаж определенного продукта, например палаток, оптимизатор не сможет выполнять операцию от-" сечения разделов и должен будет проводить поиск данных по всем месяцам. Од­нако при запросе «Сколько палаток продано январе?» — оптимизатор сможет отбросить разделы индекса, посвященные февралю и марту.

Если обобщить сказанное, локальные индексы с префиксом являются на­иболее эффективным типом индекса с точки зрения производительности об­работки запросов, поскольку оптимизатор сможет использовать отсечение разделов и не заглядывать в ненужные. Локальные индексы также облегчают операции по типу «сдвигающейся рамки». Если возможно, избегайте исполь-

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

Метки:10, 11, 12, 13, 14, 15, 4, 5, 6, 7, 8, 9

Связанные записи

Tags: , , , , , , , , , , ,

Статьи по теме:

No related posts
Доктор Хаус онлайн смотреть быстрее беги сюда где есть этот сериал