Database Programming & Design



         

Support for Data Warehouses - часть 7


Например, индекс будет использован для выполнения следующих двух

операторов SELECT. В обоих случаях доступ к таблице CUSTOMER не

требуется.

SELECT SUM(s.dollar_sales) FROM CUSTOMER c, SALES s

WHERE s.cid = c.cid AND c.gender = 'M';

SELECT SUM(dollar_sales) FROM SALES

WHERE CID IN (SELECT CID FROM CUSTOMERS WHERE

c.gender = 'M');

MTJ-индекс, который конкатенирует значения столбцов из нескольких

таблиц разных измерений, чтобы ограничить строки центральной

таблицы фактов, создается следующим SQL-оператором. При

использовании этого индекса не потребуются соединения для

выполнения звезднообразного оператора SELECT, приведенного выше

(SEL1).

CREATE GK INDEX ORDERSMPG

ON SALES

(SELECT AS KEY t.month, p.package_type, c.gender

FROM SALES s, TIME t, PRODUCT p, CUSTOMER c

WHERE s.day = t.day AND s.pid = p.pid

AND s.cid = c.cid);

Формат GK-индекса настолько гибок, что поддерживает совершенно

новые возможности индексации, такие как индекс на виртуальном

столбце, представленном выражением над базовыми столбцами.

Предположим, что в таблице SALES определяется новый виртуальный

столбец по формуле:

profit_per_unit = (dollar_sales - dollar_cost) / unit_sales

Все три составляющих являются реальными столбцами таблицы SALES,

так что вычисление производится легко для каждой строки SALES.

Такой виртуальный столбец может быть определен с помощью

операторов CREATE TABLE или ALTER TABLE диалекта языка SQL

компании Informix. После этого виртуальный столбец можно

использовать в запросах точно так же, как и реальные столбцы. Для

этого столбца можно создать GK-индекс с помощью простого оператора

CREATE GK INDEX PROFITX

ON SALES

(SELECT AS KEY profit_per_unit

FROM SALES);

Селективный индекс напоминает набор строк, выбираемых из таблицы

при задании в разделе WHERE некоторого набора ограничений. Этот

набор строк, представленный битовой строкой, называется foundset

("найденным набором"). Если имеется желание ограничить внимание в

таблице EMPLOYEES "технарями", можно определить следующий

селективный GK-индекс:

CREATE GK INDEX TECHIES

ON EMPLOYEES

(SELECT AS KEY 'constant'

FROM EMPLOYEES

WHERE hobby = 'math' AND reading = 'Dibert');

Informix старается добиться еще более высоких показателей эффективности в будущем.




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