где
- операция селекции с логической формулой .Формула
имеет вид: , (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
q2
product
clients orders
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
Расчет сложности оптимизированного запроса приведен ниже.
, (2.14)где
- операция селекции с логической формулой .Формула
имеет вид: , (2.15) , , , (2.16) .Так как операция селекции не изменяет структуру таблицы, то
, . , (2.17)где
- результат естественного соединения таблиц; - таблицы, участвующие в соединении; - псевдонимы, используемые вместо имен таблиц для сокращения записи; - операция естественного соединения. , (2.18) (2.19) , , , . , (2.20) , (2.21)где
- число блоков, записанных в таблице ; - длина одной записи таблицы в блоках; - длина одной записи таблицы в байтах; - размер одного блока.Очевидно, что
, (2.22)где
- объем в байтах поля ; - объем в байтах поля ; , , . . . . , (2.23) , , , , , (2.24) .Очевидно, что
, (2.25) , , , . . .Так как операция проекции располагается последней, то ее не учитывают при расчете сложности запроса.
Окончательно имеем:
, (2.26)Выбрать всех клиентов, которые приобрели все без исключения препараты, перечисленные в отдельном списке – отдельной таблице.