Классика баз данных - статьи

       

Рассмотрим представление, которое выдает номер


Рассмотрим представление, которое выдает номер изделия и его производителя для изделий, которые начали поставляться их производителями позже 1985 г. В этом представлении используется запрос, обеспечивающий информацию о некоторых изделиях и их поставщиках.

Пример 1.

CREATE VIEW itpv AS (SELECT DISTINCT itp.itemn, pur.vendn FROM itp, pur WHERE itp.ponum = pur.ponum AND pur.odate > '85');

SELECT itm.itmn, itpv.vendn FROM itm, itpv WHERE itm.itemn = itpv.itemn AND itm.itemn ≥ '01' AND itm.itemn < '20';

Логика перезаписи прежде всего распознает, что результат запроса является DISTINCT, применив правило DISTPU, разъясняемое ниже. Затем применяется правило слияния. Результирующим запросом является:

SELECT DISTINCT itm.itmn, pur.vendn FROM itm, itp, pur WHERE itp.ponum = pur.ponum AND itm.itemn = itp.itemn AND pur.odate >'85' AND itm.itemn ≥ '01' AND itm.itemn < '20';

В результате слияния представления с запросом оптимизатор планов сможет использовать индексы для доступа к таблицам внутри представления, и он выберет план, выполняющий соединения. Результаты выполнения этого запроса с перезаписью и без нее показаны в таб. 3. После применения правила перезаписи мы получаем уменьшение времени процессора в 1100 раз и уменьшение общего времени выполнения запроса в 200 раз.



Таб. 3. Пример 1 до и после перезаписи

Правило 2. Distinct Pullup (вытягивание Distinct)

В правиле DISTPU (таб. 4) для блока SELECT upper делается заключение, что не требуется какое-либо удаление дубликатов для гарантирования уникальности всех его результирующих кортежей. Это делается путем выделения следующих свойств:

  • one-tuple-condition: для заданных квантификатора и набора предикатов это условие принимает значение TRUE в том и только в том случае, когда предикатам удовлетворяет, самое большее, один кортеж квантификатора.
  • quantifier-nodup-condition: для заданных квантификатора F и набора предикатов это условие принимает значение TRUE в том и только в том случае, когда в результате появляется хотя бы один первичный или возможный ключ F.


    Содержание  Назад  Вперед