Результаты времени компиляции
На диаграмме на рис. 7 показано общее время компиляции (перезапись + оптимизация) при использовании magopt и nomag. Это время включает второй проход оптимизатора, выполняемый при выборе перезаписи на основе магических множеств (заметим, что в данном случае используется линейная, а не логарифмическая шкала). Для более мелких запросов выбирается перезапись на основе магических множеств, и поэтому время компиляции для magopt почти вдвое больше времени для nomag. Эти накладные расходы представляются нам приемлемыми, поскольку для запросов поддержки принятия решений время компиляции обычно мало по сравнению со временем выполнения.
Рис. 8. Исходные накладные расходы оптимизации
Для более крупных запросов перезапись на основе магических множеств не выбирается и поэтому второй проход оптимизатора отсутствует. Как показывает диаграмма, имеются очень небольшие накладные расходы на анализ целесообразности перезаписи. Это важно в тех случаях, когда накладные расходы на оптимизацию являются существенными. Диаграмма на рис. 8 показывает это более отчетливо; на ней изображено время, затраченное в первом проходе оптимизации, когда magopt анализирует возможность применения Filterjoin. Хотя magopt анализирует большее число планом, в число которых входят планы, включающие Filterjoin, затрачиваемое на это время не очень велико. Этот результат подтверждает наше утверждение о том, что оценочная магическая оптимизация не изменяет порядок сложности оптимизации запросов.