Базы данных 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;


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