Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Оптимизация SQL.doc
Скачиваний:
14
Добавлен:
29.08.2019
Размер:
1.7 Mб
Скачать

36

  1. Оптимизация sql-запросов

    1. Последовательность оптимизации запросов и используемые законы реляционной алгебры

      1. Основные шаги оптимизации

Поступающий на сервер SQL-запрос подвергается оптимизации с целью уменьшения времени его выполнения. При этом оптимизатор запросов выполняет следующие шаги:

I. Строит логический план выполнения запроса (дерево логических операций).

II. Строит оптимальный физический план выполнения запроса (дерево физических операций).

III. Реализует полученный оптимальный физический план выполнения запроса.

Примечание. Оптимизатор называется восходящим, если при построении оптимального физического плана он просматривает логический план от листьев к корню. Если логический план просматривается от корня к листьям, то такой оптимизатор называется нисходящим.

      1. Законы реляционной алгебры

Для построения логического плана выполнения запроса используются законы реляционной алгебры, некоторые из которых рассмотрены ниже.

1.Закон коммутативности декартова произведения.

Имеет место равенство:

R1 × R2 = R2 × R1 ,

где R1 и R2 – отношения (таблицы).

2. Закон ассоциативности декартова произведения.

Справедливо равенство:

(R1 × R2) × R3 = R1 × (R2 × R3),

где R1, R2 и R3 – отношения (таблицы).

3. Закон каскада проекций.

Если , где {a1, …, an} и {b1, …, bm} – некоторые множества атрибутов, то имеет место следующее равенство:

.

4. Закон каскада селекций.

Если условие F является конъюнкцией нескольких условий, т.е. , то справедливо следующее равенство:

.

5. Закон перестановки проекции и селекции:

1. В условие F входят атрибуты только из множества {a1, …, an}.

Имеет место следующее равенство:

.

2. В условие F входят атрибуты не только из множества {a1, …, an}.

Справежливо следующее равенство:

,

где b1, …, bm – атрибуты таблицы R, которые входят в условие F, но не принадлежат множеству {a1, …, an}.

6. Закон перестановки селекции и декартова произведения.

Если условие f1 включает в себя только атрибуты отношения R1, то имеет место следующее равенство:

.

Следствие. Пусть , причем в f1 входят атрибуты только из отношения R1, а в f2 входят атрибуты только из R2. В этом случае справедливо следующее равенство:

.

7. Закон перестановки селекции и объединения.

Имеет место следующее равенство:

.

Примечание. В языке SQL операция объединения отношений моделируется с помощью операции UNION.

8. Закон перестановки селекции и разности отношений.

Справедливо следующее равенство:

,

где R1 – R2 – множество кортежей, которые принадлежат отношению R1 и не принадлежат R2.

9. Закон перестановки проекции и декартова произведения.

Пусть {b1, …, bn} – некоторые атрибуты из R1, {с1, …, сm} – некоторые атрибуты из R2. Имеет место следующее равенство:

10. Закон перестановки проекции и объединения.

Справедливо следующее равенство:

.

    1. Построение логического плана

При построении логического плана выполнения SQL-запроса выполняются следующие действия:

1. Запрос преобразуется в формулу реляционной алгебры (явно или неявно).

2. Выполняется преобразование (оптимизация) этой формулы.

      1. Преобразование запроса в формулу реляционной алгебры

Оператор SELECT языка SQL может быть представлен в виде следующей формулы реляционной алгебры (здесь не рассматриваются функции агрегирования, группирования и удаления дубликатов):

π AF(R1× R2 × … × Rn)), (5.1)

где R1× R2 × … × Rn – декартово произведение отношений (таблиц), указанных за ключевым словом FROM;

σF – операция селекции кортежей декартова произведения в соответствии с условием F, указанным за ключевым словом WHERE;

π A – проекция селекции на множество атрибутов А, перечисленных за ключевым словом SELECT.

Ниже приведён пример преобразования запроса.

Запрос: "Найти фамилию пользователя с кодом 3".

Оператор SELECT:

SELECT фамилия

FROM пользователь

WHERE код_пользователя = 3;

Формула реляционной алгебры:

A

F

R1