Исследование оптимизации запросов в СУБД

Слайд 2

СУБД и Запросы
СУБД - программный продукт, предназначенный для централизованного хранения данных.

СУБД и Запросы СУБД - программный продукт, предназначенный для централизованного хранения данных.

Сервер базы данных - совокупность компонент СУБД, находящихся в состоянии выполнения и способных обрабатывать данные.
Запросы — средства обработки данных.

Слайд 3

Оптимизатор
Функция стоимости :
● неявная ( оптимизатор использует преобразования, заведомо приводящие к улучшению

Оптимизатор Функция стоимости : ● неявная ( оптимизатор использует преобразования, заведомо приводящие
плана);
● явная ( вычисляется на основе сложности
алгоритма и статистических характеристиках хранимых данных).

Слайд 4

Задача

поиск случаев, в которых оптимизатор не способен выбрать оптимальный план исполнения
воспроизведение

Задача поиск случаев, в которых оптимизатор не способен выбрать оптимальный план исполнения
этих случаев
преобразование запросов для построения более удачных планов

Слайд 5

СУБД

Используемые СУБД:
Ms SQl Server 2005
Oracle 11.1.0.7.0

СУБД Используемые СУБД: Ms SQl Server 2005 Oracle 11.1.0.7.0

Слайд 6

MS SQL

SELECT num, fl FROM random where fl = 111
declare @c float
set

MS SQL SELECT num, fl FROM random where fl = 111 declare
@c = 111
SELECT num, fl FROM random where fl = @c
declare @c float
set @c = 111
SELECT num, fl FROM random where fl = @c
OPTION (OPTIMIZE FOR (@c = 111))

Слайд 7

Oracle

Использование “!=”
SELECT * from FIRST where rand != 1
SELECT * from FIRST

Oracle Использование “!=” SELECT * from FIRST where rand != 1 SELECT
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;

Слайд 8

Неудавшиеся эксперименты

Пример с OR и Union
SELECT * FROM FIRST F, SECOND S

Неудавшиеся эксперименты Пример с OR и Union SELECT * FROM FIRST F,
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)
Имя файла: Исследование-оптимизации-запросов-в-СУБД.pptx
Количество просмотров: 102
Количество скачиваний: 0