ЗАПРОС ¦ --T--- ¦ --------¬ --------¬ -------¬ ---------¬ ¦ -------¬ ---+---+Синтак-¦ ¦Логи- ¦ ¦Выбор ¦ ¦Произве-¦ ¦Выпол-¦ ¦Лекси-¦сичес- ¦ ¦ческая ¦ ¦опти- ¦ ¦дение ¦ ¦ ¦нение ¦ ¦ческий¦кий +-+оптими-+-+маль- +-+выполня-¦ ¦плана ¦ ¦анализ¦анализ ¦ ¦зация ¦ ¦ного ¦ ¦емого ¦ ¦ ¦ ¦ L------+ ¦ ¦ ¦ ¦плана ¦ ¦плана ¦ ¦ ¦ L---T---- L---T---- L--T---- L---T---T- ¦ L--T---- ¦ ¦ ¦ ¦ ¦ ¦ ¦ ----+--------+-¬ ¦ --+---+------+-¬ ¦ ¦ Внутреннее ¦ ¦ ¦ Выполняемое ¦ L-----+ представление+-------- ¦ представление¦ ¦ запроса ¦ ¦ запроса ¦ L--------------- L---------------
Рис.1. Этапы обработки запроса в реляционной СУБД.
¦Число сотрудников ¦ ¦ 40 40 ¦ **** **** ¦ **** **** ¦ 1 5 **** **** 5 5 5 1 1 1 ¦ * **** **** **** **** **** * * * * L-----T-----T-----T-----T-----T-----T-----T-----T-----T-----T 10 15 20 25 30 35 40 45 50 55 60 Возраст
Рис.2 Простая гистограмма распределения возрастов служащих.
¦ ¦ Возраст 60 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ 34 ¦ ¦ ¦ ¦ ¦ 26 27 28 28 ¦ ¦ ¦ 21 22 23 25 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-- 0 1 2 3 4 5 6 7 8 9 10 Номера интервалов 1 11 21 31 41 51 61 71 81 91 100 Позиции значений в их отсортированном списке
Рис.3 Псевдогистограмма распределения возрастов служащих.
Указатели альтернатив --------+-------¬ ¦ ¦ ¦ имя STAR ¦ ---T-----------T--¬ ¦ ¦TableAccess¦ ¦ +--+-----------+--+ ¦ EMP ¦ +-----------------+ ¦ {NAME, ADDRESS} ¦ +-----------------+ ¦ {SAL < 30.000, ¦ ¦ AGE > 45} ¦ L------------------
Рис.4. Дерево вызовов до обработки узла TableAccess.
---T-----------T--¬ ---T-----------T--¬ ---T-----------T--¬ ¦ ¦ TableScan ¦ -+--+- ¦ GET ¦ -+--+- ¦ GET ¦ ¦ ¦ ¦ ¦ -+--+- ¦ ¦ -+--+- ¦ ¦ ¦ +--+-----------+--+ +--+-----------+--+ +--+-----------+--+ ¦ ¦ -+------- ¦ -+-------- ¦ ¦ ¦ ¦¦ ¦ ¦¦ ¦ ¦ EMP ¦ ¦+-----------------+ ¦+-----------------+ ¦ ¦ ¦¦ EMP ¦ ¦¦ EMP ¦ +-----------------+ ¦+-----------------+ ¦+-----------------+ ¦ {NAME, ADDRESS} ¦ ¦¦ {NAME, ADDRESS} ¦ ¦¦ {NAME, ADDRESS} ¦ +-----------------+ ¦+-----------------+ ¦+-----------------+ ¦ {SAL < 30.000, ¦ ¦¦ {SAL < 30.000, ¦ ¦¦ {SAL < 30.000, ¦ ¦ AGE > 45} ¦ ¦¦ AGE > 45} ¦ ¦¦ AGE > 45} ¦ L------------------ ¦L------------------ ¦L------------------ ---- --- ¦ ¦ ---T-----------T--¬ ---T-----------T--¬ ¦ ¦ TableScan ¦ ¦ ¦ ¦ TableScan ¦ ¦ +--+-----------+--+ +--+-----------+--+ ¦ INDEX1 ¦ ¦ INDEX3 ¦ +-----------------+ +-----------------+ ¦ {TID} ¦ ¦ {TID} ¦ +-----------------+ +-----------------+ ¦ {SAL < 30.000, ¦ ¦ {SAL < 30.000, ¦ ¦ AGE > 45} ¦ ¦ AGE > 45} ¦ L------------------ L------------------
Рис.5. Дерево вызовов после обработки узла TableAccess.
Q1, Q2,..., Qn Q1, Q2,..., Qn ¦ ¦ ------+-----¬ ------+-----¬ ¦ Локальный ¦ ¦Глобальный ¦ ¦оптимизатор¦ ¦оптимизатор¦ L-----T------ L-----T------ P1, P2,..., Pn Глобальный план ¦ ¦ ------+-----¬ ------+-----¬ ¦ Слияние ¦ ¦Выполнение ¦ ¦ планов ¦ L------------ L-----T------ Глобальный план ¦ ------+-----¬ ¦ Выполнение¦ L------------
Рис.6 Архитектуры систем обработки наборов запросов.