Учебно-практическое пособие москва 2017 ббк



Pdf көрінісі
бет224/243
Дата21.07.2022
өлшемі3,05 Mb.
#147663
түріУчебно-практическое пособие
1   ...   220   221   222   223   224   225   226   227   ...   243
Байланысты:
Язык SQL. Базовый курс

соединение хешированием
(hash
join). Получим список маршрутов с указанием модели самолета, выполняющего рей-
сы по этим маршрутам. Воспользуемся таблицами «Маршруты» (routes) и «Самолеты»
(aircrafts).
EXPLAIN
SELECT r.flight_no, r.departure_airport_name,
r.arrival_airport_name, a.model
FROM routes r
JOIN aircrafts a ON r.aircraft_code = a.aircraft_code
ORDER BY flight_no;
235


QUERY PLAN
-----------------------------------------------------------------
Sort (cost=24.25..24.31 rows=21 width=124)
Sort Key: r.flight_no
-> Hash Join (cost=1.20..23.79 rows=21 width=124)
Hash Cond: (r.aircraft_code = a.aircraft_code)
-> Seq Scan on routes r (cost=0.00..20.64 rows=464 width=108)
-> Hash (cost=1.09..1.09 rows=9 width=48)
-> Seq Scan on aircrafts a (cost=0.00..1.09 rows=9 width=48)
(7 строк)
На самом внутреннем уровне плана последовательно сканируется (Seq Scan) таблица
aircrafts, и формируется хеш-таблица, ключами которой являются значения атрибу-
та aircraft_code, т. к. именно по нему выполняется соединение таблиц. Затем после-
довательно сканируется (Seq Scan) таблица routes, и для каждой ее строки выполня-
ется поиск значения атрибута aircraft_code среди ключей хеш-таблицы: Hash Cond:
(r.aircraft_code = a.aircraft_code). Если такой поиск успешен, значит, формируется ком-
бинированная результирующая строка выборки. На верхнем уровне плана сформи-
рованные строки сортируются. Обратите внимание, что хеш-таблица создана на ос-
нове той таблицы, число строк в которой меньше, т. е. aircrafts. Таким образом, поиск
в ней будет выполняться быстрее, чем если бы хеш-таблица была создана на основе
таблицы routes.
Последний из методов соединения наборов строк —
соединение слиянием
(merge
join). Для иллюстрации воспользуемся простым запросом, построенным на основе
таблиц «Билеты» (tickets) и «Перелеты» (ticket_flights). Он выбирает для каждого би-
лета все перелеты, включенные в него. Конечно, это очень упрощенный запрос, в ре-
альной ситуации он не представлял бы большой практической пользы, но в целях
упрощения плана и повышения наглядности, воспользуемся им.


Достарыңызбен бөлісу:
1   ...   220   221   222   223   224   225   226   227   ...   243




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет