Санкт-Петербургский Государственный Университет Математико-механический факультет Кафедра системного программирования Научный руководитель: Б.А. Новиков Выполнила: студентка гр.445 Нишневич Анастасия
СУБД - программный продукт, предназначенный для централизованного хранения данных. Сервер базы данных - совокупность компонент СУБД, находящихся в состоянии выполнения и способных обрабатывать данные. Запросы средства обработки данных.
Функция стоимости : неявная ( оптимизатор использует преобразования, заведомо приводящие к улучшению плана); явная ( вычисляется на основе сложности алгоритма и статистических характеристиках хранимых данных).
поиск случаев, в которых оптимизатор не способен выбрать оптимальный план исполнения воспроизведение этих случаев преобразование запросов для построения более удачных планов
Используемые СУБД: Ms SQl Server 2005 Oracle
SELECT num, fl FROM random where fl = 111 float = 111 SELECT num, fl FROM random where fl float = 111 SELECT num, fl FROM random where fl OPTION (OPTIMIZE FOR = 111))
Использование != SELECT * from FIRST where rand != 1 SELECT * from FIRST where rand in (110,111,112) Выборка с использованием NOT NULL select * from FIRST where rand is null select * from FIRST where rand = -1 select * from FIRST where rand = -1;
Пример с OR и Union SELECT * FROM FIRST F, SECOND S WHERE F.NUM= S.NUM AND S.RAND2 = 110 OR F.RAND = 11 Пример с Not IN(...) и MINUS select rand from FIRST where rand not in(select rand2 from second where rand2 = 110) select rand from FIRST minus (select rand2 from second where rand2 = 110)
найдены примеры не оптимального построения планов для Oracle и MS SQL; получено представление о работе оптимизаторов для Oracle и MS SQL; запросы из указанных выше примеров воспроизведены и преобразованы для ускорения работы.