Оценочная оптимизация для магии алгебра и реализация

       

Мотивация


SQL-запрос на рис. 1 находит всех работающих в больших отделах молодых служащих, зарплата каждого из которых выше средней зарплаты отдела, в котором работает данный служащий. Запрос затрагивает реляционное представление DepAvgSal, которое порождает среднюю зарплату в каждом отделе, и включает соединение отношений Emp, Dept и DepAvgSal. В перезаписи на основе магических множеств используется тот факт, что среднюю отдельскую зарплату не требуется вычислять для каждого отдела; ее нужно вычислять только для больших отделов, в которых имеются молодые служащие. Если таких отделов немного, то, вероятно, желательно применить перезапись на основе магических множеств. Переписанный запрос показан на рис. 2. Представление PartialResult представляет представляет частичное вычисление в основном блоке запроса на стадии, когда таблицы Emp и Dept уже соединены между собой, но к ним еще не присоединено представление DepAvgSal. На основе этой таблицы PartialResult создается не содержащее дубликатов представление Filter, порождающее множество всех отделов, для которых требуется вычислять среднюю зарплату. Далее это фильтрующее множество используется для ограничения вычислений в исходном представлении. Представление модифицируется путем включения эквисоединения с фильтрующим множеством (тем самым, ограничивая вычисления в представлении отделами, представляющими интерес). Наконец, в основном блоке запроса на рис. 2 модифицированное представление соединяется с таблицей PartialResult для формирования окончательного результата.



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