Исходное дерево для запроса представлено на рисунке 2.21
q2
product
clients orders
|
Рисунок 2.21- Исходное дерево запроса
Расчет сложности запроса
Расчет сложности исходного запроса приведен ниже.
, (2.1)
где
- результат естественного соединения таблиц;
- таблицы, участвующие в соединении;
- псевдонимы, используемые вместо имен таблиц для сокращения записи;
- операция естественного соединения.
, (2.2)
(2.3)
где
- число записей в таблице
;
- число записей в таблице С;
- число записей в таблице O;
- число различных значений в столбце clientid таблицы Clients;
- число различных значений в столбце clientid таблицы Orders.
,
,
,
.
, (2.4)
, (2.5)
где
- число блоков, записанных в таблице
;
- длина одной записи таблицы
в блоках;
- длина одной записи таблицы
в байтах;
- размер одного блока.
Очевидно, что
, (2.6)
где
- объем в байтах поля
;
- объем в байтах поля
;
,
,
.
.
.
.
, (2.7)
,
,
,
,
. (2.8)
.
Очевидно, что
, (2.9)
,
,
,
.
.
.
(2.10)
где
- операция селекции с логической формулой
.
Формула
имеет вид:
, (2.11)
,

, (2.12)
.
Так как операция селекции не изменяет структуру таблицы, то
,
.
Так как операция проекции располагается последней, то ее не учитывают при расчете сложности запроса.
Окончательно имеем:
, (2.13)
.
2.1
2.2
2.3
2.3.1
2.3.1.1
2.3.1.2
2.3.1.3
2.3.1.4
Оптимизированное дерево запроса
Оптимизированное дерево для запроса представлено на рисунке 2.22
product
clients orders |
Рисунок 2.22 - Оптимизированное дерево запроса
Текст оптимизированного запроса на языке SQL
Текст оптимизированного запроса представлен на рисунке 2.23
| SELECT product.productid, product.name_product; FROM product; WHERE (product.name_product = " Fuzafungin ") INTO TABLE k SELECT sotruds...name, sotruds..serial_pas, sotruds...number_pas, orders.data_zakaza, orders.orderid as Number_Order; FROM ((orders JOIN clients ON orders. sotrudid = sotruds. sotrudid) JOIN k ON k.productid = orders.productid); |
Рисунок 2.23


q1


q3
q2






