Database Programming & Design



         

Support for Data Warehouses - часть 6


По этой причине MTJ-индексы могут быть полезны только в

исключительно специальных ситуациях.

Возникает вопрос: если понадобится создать много индексов

соединения, не приведет ли это к деградации системы? Ответ: нет.

На платформах DSS, где отсутствуют параллельные изменения,

индексы соединения позволяют повысить эффективность выполнения

запросов лишь за счет расходов на дополнительное дисковое

пространство.

Как сделаны битовые индексы в продуктах компании Informix,

предназначенных для поддержки DSS? Новая форма индекса,

называемая GK-индекс (Generalized Key) представляет гибкую

комбинацию традиционных и битовых индексных структур. Вот

синтаксис оператора CREATE GK INDEX:

CREATE GK INDEX INDEXNAME

ON T

(SELECT AS KEY X.c1 {, Y.c2, ...}

FROM T, X, Y, ...

WHERE }

);

В результате будет создан именованный индекс на таблице T. Раздел

SELECT AS KEY явно определяет значение ключа индекса, который

может быть вычислен для каждой строки T, и индекс позволяет

выбрать строку T с этим ключом. Ключ индекса может состоять из

набора конкатенированных значений столбцов таблиц X, Y, ..., а

раздел WHERE будет специфицировать (среди прочего), каким образом

строки со столбцами, значения которых входят в значение ключа

индекса, соединяются в результирующую строку. Список SELECT не

порождает какого-либо порядка таблиц. Он означает только то, что

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

из таблицы T будет выбираться только один столбец; в разделе FROM

не требуется указывать несколько таблиц.

GK-индекс обеспечивает большую гибкость длф создания новых типов

индексов. Например, ниже показано, как создать FCJ-индекс на

таблице SALES для обозначений пола в таблице CUSTOMER:

CREATE GK INDEX ORDERGENDER

ON SALES

(SELECT AS KEY c.gender

FROM SALES s, CUSTOMER c

WHERE s.cid = c.cid);

При наличии этого индекса оптимизатор SQL-запросов будет

использовать его для выполнения соответствующих операторов SQL

без какой-либо потребности во вмешательстве пользователя.




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