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

В большинстве случаев нужно, чтобы запросы явным образом переписывались под использование материализованных представлений. При определении мате­риализованного представления, если вы хотите сделать его доступным для пере­писывания запросов, используйте условие ENABLE QUERY REWRITE, как показано в приведенном примере. Если вы не хотите использовать материали­зованное представление в переписывании запросов, применяйте условие DIS­ABLE QUERY REWRITE. Если у вас имеются материализованные представле­ния, и вы хотите, чтобы база Oracle проводила их обновление, но не делала их доступными для функции переписывания запросов, укажите условие DISABLE QUERY REWRITE в определении материализованного представления.

Подробно использование переписывания запросов обсуждается в разделе 4.6.

■ -                                                                                                                                                                                                                                                                                                                           ‘

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

•   Условие WHERE, соединяющее таблицу фактов и одну или более таблиц из­

мерений. В нашем примере таблица фактов PURCHASES соединяется с таб­

лицами измерений TIME и PRODUCTS. Здесь можно сделать выборки, что­

бы ограничить объем данных в материализованном представлении.

Один или более оператор агрегирования. В нашем примере для получения общих объемов продаж мы используем оператор COUNT. Можно включать операторы SUM, MIN, MAX, AVG, COUNT(*), COUNT, COUNT(DIS-TINCT x), VARIANCE и STDDEV. В материализованном представлении также можно использовать аналитические функции и рамочные агрегаты, которые обсуждались в главе 3.

•   Условие GROUP BY. В приведенном примере мы вычисляем общее число

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

Материализованное представление из предыдущего примера включает агрега­цию и поэтому может быть названо материализованным агрегирующим пред­ставлением (materialized aggregate view).

Материализованное представление также можно использовать для соедине­ния двух и более таблиц без всякой агрегации. Такой тип материализованного представления называется материализованным соединительным представлением (materialized join view, MJV) и используется для предварительного вычисления ресурсоемких соединений. Материализованное соединительное представление можно использовать вместо соединительного индекса на основе битовых карт. Такой индекс более приспособлен к звездообразным запросам и будет работать лучше, чем MJV, если вы хотите вычислить комбинации выборок по ключам ин­декса. С другой стороны, материализованные соединительные представления можно использовать при обработке более широкого класса запросов с примене­нием переписывания запросов. Однако, как правило, MJV намного больше со­единительных индексов на основе битовых карт.

В следующем примере показано материализованное соединительное пред-ставление, используемое для вычисления соединения таблиц PURCHASES и CUSTOMER.

CREATE MATERIALIZED VIEW customer_purchases_mv

BUILD IMMEDIATE

REFRESH COMPLETE

AS

SELECT c.sex,   c.occupation,    f.purchase_price

FROM purchases f,    customer с

WHERE f.customer_id =   с.customer_id

172_

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

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

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

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

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