Database Programming & Design



         

Support for Data Warehouses - часть 5


ограничение на gender кажется естественным выполнять после

соединения. Но предположим, что производится некоторая

предварительная подготовка, заключающаяся в соединении всех строк

SALES со всеми соответствующими строками CUSTOMER (для каждой

продажи имеется только один заказчик) и ограничим строки SALES

условием, что заказчики - мужчины. В результате будет выбрано

около половины строк SALES, что лучше всего представляется

битовой шкалой. Аналогично, можно ограничить строки SALES

условием, что заказчики - женщины, и создать соответствующую

битовую шкалу. Теперь создадим индекс на SALES с двумя значениями

"M" и "F" и свяжем две ранее полученных шкалы с этими значениями.

Реально мы создали индекс по половому признаку для SALES, хотя

сама таблица SALES не содержит такого столбца. Этот индекс делает

не обязательным реально выполнять соединение между SALES и

CUSTOMERS при выполнении запроса. Такой индекс называется

индексом соединения внешнего столбца (FCJ - Foreign Column Join).

Чтобы еще больше сократить работу по выполнению запроса, можно

создать на таблице SALES FCJ-индексы для p.package_type и

t.month. Тогда оптимизатор запросов сможет выполнить этот запрос

с использованием только индексов на таблице SALES. FCJ-индекс

является вариантом битового индекса соединения, предложенного в

статье Valduriez P., "Join Indexes", ACM TODS, 12 (2), 218-246,

June 1987.

Вместо создания трех FCJ-индексов можно создать многотабличный

индекс соединения (MTJ - Multi-Table Index) на таблице SALES,

объединяющий столбцы нескольких таблиц - t.month, p.package_type

и c.gender. Хотя такие индексы позволяют еще больше повысить

эффективность соединения, их наличие может привести к

определенной потере гибкости. Кроме того, по соображениям

эффективности, возможно, пришлось бы создать MTJ-индекс для

каждой комбинации внешних таблиц, которая характерна для данной

рабочей загрузки системы. С другой стороны, число FCJ-индексов

возрастает только линейно с увеличением числа внешних столбцов.




Содержание  Назад  Вперед