Второй запрос вычисляет сумму объемов
Второй запрос вычисляет сумму объемов продаж, проведенных в первые пять месяцев 1998 и 1999 годов для всех клиентов из Чикаго в конкретных регионах продаж. Результирующий набор группируется по фамилиям клиентов, названиям округов, номерам регионов продаж, годам и месяцам. В отличие от запроса 1 в этом запросе используется материализованное представление WEEKLY_SALES в котором содержатся данные о продажах, агрегированные на уровне недель. Этот SQL-оператор можно найти в приложении. План выполнения запроса и время, затраченное на определенные операции, показаны на рис. 8.
Этот запрос также преобразовывается функциональным средством оптимизатора СУБД Oracle для преобразования запросов типа "звезда".
Рис. 8. План выполнения запроса типа "звезда" номер 2
Надписи на рисунке:
Elapsed Times - интервалы общего затраченного времени;
Compressed - сжатая ;
Not Compressed - несжатая;
HJ - hash join, хеш-соединение;
Index on Sales Region - индекс по регионам продаж;
Time - время;
Customer - клиент;
Local Index Rowid - идентификатор строки из локального индекса;
Weekly Detail Summary Table - таблица итогов продаж по неделям;
Bitmap AND - битовая операция AND;
Bitmap merge - слияние битовых векторов;
Customer-Dimension - измерение Items (продукты);
Time-Dimension - измерение Time (время).
SELECT C.district, C.name, T.year, T.month, R.region_number, SUM(sales) FROM customers C, time T weekly_sales S, sales_region R WHERE S.region_id=R.region_id AND S.addr_id=C.addr_id AND S.date=T.date AND T.year in (1998, 1999) AND T.month in (1,2,3,4,5) AND C_district = 'Chicago' AND R.region_number in ('234','4565','111','1') GROUP BY C.district, C.name, T.year, T.month, R.region_number;
Содержание раздела