Смекни!
smekni.com

Проектирование базы данных Аптека (стр. 5 из 6)

2.5.2.2 Текст запроса на языке SQL

Текст запроса представлен на рисунке 2.23


SELECT COUNT(*); FROM product INTO ARRAY Ar SELECT clients.clientid, clients.name; FROM ((clients JOIN orders ON orders.clientid = clients.clientid) JOIN Ar ON orders.productid = Ar.productid); GROUP BY clients.clientid, clients.name; HAVING COUNT(*)=Ar;

Рисунок 2.23

2.5.2.3 Исходное дерево запроса

Дерево запроса представлено на рисунке 2.24.



q2

q1

product clients


clients orders

Рисунок 2.4


2.5.2.4 Расчет сложности запроса

Расчет сложности исходного запроса приведен ниже.

, (2.27)

где

- результат естественного соединения таблиц;

- таблицы, участвующие в соединении;

- псевдонимы, используемые вместо имен таблиц для сокращения записи;

- операция естественного соединения.

, (2.28)

(2.29)

где

- число записей в таблице
;

- число записей в таблице С;

- число записей в таблице O;

- число различных значений в столбце clientid таблицы Clients;

- число различных значений в столбце clientid таблицы Orders.

,

,

,

.

, (2.30)

, (2.31)

где

- число блоков, записанных в таблице
;

- длина одной записи таблицы
в блоках;

- длина одной записи таблицы
в байтах;

- размер одного блока.

Очевидно, что

, (2.32)

где

- объем в байтах поля
;

- объем в байтах поля
;

,

,

.

.

.

.

, (2.33)

,

,

,

,

. (2.34)

.

Очевидно, что

, (2.35)

,

,

,

.

.

.

(2.36)

где

- операция проекции из таблицы
атрибутов
.

.

.

,

,

.

Так как операция группировки является последней, то для нее не производится расчет сложности.

Окончательно имеем:

, (2.37)

2.5.2.5 птимизированное дерево запроса

Оптимизированное дерево запроса представлено на рисунке 2.25.



q2