представлений для переписывания запросов
В большинстве случаев нужно, чтобы запросы явным образом переписывались под использование материализованных представлений. При определении материализованного представления, если вы хотите сделать его доступным для переписывания запросов, используйте условие ENABLE QUERY REWRITE, как показано в приведенном примере. Если вы не хотите использовать материализованное представление в переписывании запросов, применяйте условие DISABLE 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
Статьи по теме:
No related posts