Базы данных Oracle - статьи

         

Второй запрос вычисляет сумму объемов


Второй запрос вычисляет сумму объемов продаж, проведенных в первые пять месяцев 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;


Содержание раздела