Оптимизация запроса
Предположим, что на сервер СУБД поступает запрос SELECT. На сервере хранятся две таблицы, участвующие в запросе (рис. 1.4).
Рис. 1.4. Исходные таблицы на сервере СУБД.
Предположим, что клиент, связанный с сервером СУБД, выдал следующий запрос: "Найти значения остатков, большие 1500, на счетах пользователя с кодом 3". Соответствующий запрос SELECT имеет следующий вид:
SELECT остаток
FROM R2
WHERE остаток > 1500 AND номер_счета IN
(SELECT номер_счета
FROM R1
WHERE код_пользователя = 3);
Этот оператор SELECT преобразуется в формулу реляционной алгебры (см. п. 1.2.1):
Эта формула подвергается оптимизации. Оптимизатор вначале строит логический план выполнения запроса, используя законы реляционной алгебры (см. пункты 1.1.2 и 1.2.2, номера законов показаны над равенствами):
Последняя формула – результат оптимизации, здесь подчёркнуты подзапросы. По этой формуле оптимизатор строит логический план выполнения запроса (рис. 1.5).
Рис. 1.5. Логический план выполнения запроса в графическом виде.
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | Поиск по сайту:
|