Руководство по созданию эффективных запросов



Download 17,08 Mb.
Pdf ko'rish
bet68/210
Sana25.06.2022
Hajmi17,08 Mb.
#704548
TuriРуководство
1   ...   64   65   66   67   68   69   70   71   ...   210
Bog'liq
OptimizZaprvPostgreSQL

Листинг 5.10 

Запрос с условиями по двум таблицам
SELECT last_name,
first_name,
seat
FROM boarding_pass bp
JOIN booking_leg bl USING (booking_leg_id)
JOIN flight f USING (flight_id)
JOIN booking b USING(booking_id)
JOIN passenger p USING (passenger_id)
WHERE (
departure_airport = 'JFK'
AND scheduled_departure BETWEEN '2020-07-10' AND '2020-07-11'
AND last_name = 'JOHNSON'
) OR (
departure_airport = 'EDW'
AND scheduled_departure BETWEEN '2020-07-13' AND '2020-07-14'
AND last_name = 'JOHNSTON'
)


86

Короткие запросы и индексы
Однако теперь оптимизатор может выполнить перезапись сложного за-
проса, как показано на рис. 5.17.
Рис. 5.17 

План выполнения переписанного запроса с условиями по двум таблицам
Обратите внимание на строки с 8 по 15. PostgreSQL переписывает логи-
ческое выражение и выбирает все записи из таблицы 
flight
, которые могут 
понадобиться для обоих условий, соединенных оператором 
OR
.
В таких случаях нужно просто не мешать PostgreSQL делать свою работу.
Однако встречаются запросы, которые без вмешательства человека будут 
выполняться бесконечно. Посмотрите на запрос из лис тинга 5.11. Этот за-
прос ищет рейсы с задержкой вылета больше, чем на час (которых не должно 
быть много). Для всех этих задержанных рейсов запрос выбирает посадочные 
талоны, выданные после запланированного времени вылета.
Листинг 5.11 

Короткий запрос с труднооптимизируемой фильтрацией
SELECT bp.update_ts boarding_pass_issued,
scheduled_departure,
actual_departure,
status
FROM flight f
JOIN booking_leg bl USING (flight_id)
JOIN boarding_pass bp USING (booking_leg_id)
WHERE bp.update_ts > scheduled_departure + interval '30 minutes'
AND f.update_ts >= scheduled_departure – interval '1 hour'


Избыточные критерии отбора 

87
Возможно, этот пример может показаться надуманным, но он смодели-
рован на основе производственных отчетов об исклютельных ситуациях. 
Во многих компаниях существуют те или иные отчеты об исключениях для 
выявления ненормального поведения системы. Важно, что по определению 
вывод таких отчетов должен быть небольшим. Чтобы быть полезными, от-
четы об исключениях должны сообщать об условиях, которые возникают 
относительно редко, – иначе это будут уже обычные бизнес-отчеты.
Описанная ситуация с поздней выдачей посадочных талонов, безусловно, 
ненормальна, и таких случаев не должно быть много. Однако план выполне-
ния, показанный на рис. 5.18, предусматривает полное сканирование боль-
ших таблиц и соединение хешированием, несмотря на наличие подходящих 
индексов по всем задействованным таблицам.
Что же пошло не так?

Download 17,08 Mb.

Do'stlaringiz bilan baham:
1   ...   64   65   66   67   68   69   70   71   ...   210




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish