СПИСОК 1-1 Номера шагов логической обработки запросов
(5) SELECT (5-2) DISTINCT (5-3) TOP(<top_specification>) (5-1) <select_list> (1) FROM (1-J) <left_table> <join_type> JOIN <right_table> ON <on_predicate> | (1-A) <left_table> <apply_type> APPLY <right_table_expression> AS <alias> | (1-P) <left_table> PIVOT(<pivot_specification>) AS <alias>| (1-U) <left_table> UNPIVOT(<unpivot_specification>) AS <alias> (2) WHERE <where_predicate> (3) GROUP BY <group_by_specification> (4) HAVING <having_predicate> (6) ORDER BY <order_by_list>;
Краткие этапы обработки логических запросов
■ (1) FROM Фаза FROM определяет исходные таблицы запроса и таблицу процессов
операторы. Каждый оператор таблицы применяет ряд подфаз. Например, фазы
в объединении участвуют (1-J1) декартово произведение, (1-J2) фильтр ON, (1-J3) добавление внешних строк.
Фаза FROM генерирует виртуальную таблицу VT1.
■ (1-J1) Декартово произведение На этом этапе выполняется декартово произведение (перекрестное соединение) между
две таблицы, задействованные в операторе таблиц, генерирующие VT1-J1.
■ (1-J2) ON Filter Эта фаза фильтрует строки из VT1-J1 на основе предиката, который
появляется в предложении ON (). Только строки, для которых вычисляется предикат
ИСТИНА вставляются в VT1-J2.
(1-J3) Добавить внешние строки, если указано OUTER JOIN (в отличие от CROSS JOIN или
INNER JOIN), строки из сохраненной таблицы или таблиц, для которых не найдено совпадений
добавляются к строкам из VT1-J2 как внешние строки, генерируя VT1-J3.
■ (2) WHERE Эта фаза фильтрует строки из VT1 на основе предиката, который появляется в
предложение WHERE (). Только строки, для которых предикат оценивает
ИСТИНА вставлена в VT2.
■ (3) GROUP BY На этом этапе строки из VT2 упорядочиваются по группам на основе столбца.
список, указанный в предложении GROUP BY, генерирующий VT3. В конечном счете, будет один
Строка результата на группу.
■ (4) HAVING Этот этап фильтрует группы из VT3 на основе предиката, который
появляется в предложении HAVING (). Только группы, для которых
оценки предиката TRUE вставляются в VT4.
■ (5) SELECT Эта фаза обрабатывает элементы в предложении SELECT, генерируя VT5.
■ (5-1) Оценка выражений На этом этапе выполняется оценка выражений в списке SELECT.
генерация ВТ5-1.
■ (5-2) DISTINCT Эта фаза удаляет дублирующиеся строки из VT5-1, генерируя VT5-2.
■ (5-3) TOP Эта фаза фильтрует указанное верхнее число или процент строк из
VT5-2 на основе логического порядка, определенного в предложении ORDER BY, генерирующего
стол VT5-3.
■ (6) ORDER BY Эта фаза сортирует строки из VT5-3 в соответствии со списком столбцов.
указывается в предложении ORDER BY, генерируя курсор VC6.