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


 Длинные запросы: дополнительные приемы Листинг 7.7



Download 17,08 Mb.
Pdf ko'rish
bet107/210
Sana25.06.2022
Hajmi17,08 Mb.
#704548
TuriРуководство
1   ...   103   104   105   106   107   108   109   110   ...   210
Bog'liq
OptimizZaprvPostgreSQL

144

Длинные запросы: дополнительные приемы
Листинг 7.7 

Представление с преобразованием столбца
CREATE VIEW flight_departure as
SELECT bl.flight_id,
departure_airport,
coalesce(actual_departure, scheduled_departure)::date AS departure_date,
count(DISTINCT passenger_id) AS num_passengers
FROM booking b
JOIN booking_leg bl USING (booking_id)
JOIN flight f USING (flight_id)
JOIN passenger p USING (booking_id)
GROUP BY 1,2,3
При выполнении запроса
SELECT flight_id,
num_passengers
FROM flight_departure
WHERE flight = 22183
фильтр для рейса будет перемещен внутрь представления, и запрос будет вы-
полнен менее чем за секунду. Пользователь, который не знает, что 
flight_de-
parture
является представлением, может подумать, что все столбцы обеспе-
чивают сопоставимую производительность, и может удивиться, выполнив 
следующий запрос:
SELECT flight_id,
num_passengers
FROM flight_departure
WHERE departure_date = '2020-08-01'
На его выполнение уходит почти две минуты. Разница связана с тем, что 
столбец 
leave_date
преобразует данные, а, как обсуждалось в главе 5, индексы 
в этом случае использовать невозможно. План выполнения этого запроса 
показан на рис. 7.5.
Ситуация еще более сильного снижения производительности показана 
в лис тинге 7.8. К сожалению, это реальный случай. Когда нет понимания, ка-
кой запрос скрывает представление, оно может использоваться для выбора 
данных, которые намного легче получить из базовых таблиц.
Листинг 7.8 

Выбор только одного столбца из представления
SELECT flight_id
FROM flight_departure
WHERE departure_airport = 'ORD'
Этому запросу не требуется количество пассажиров на рейсе; он просто 
выбирает рейсы, вылетающие из аэропорта О’Хара, на которые были прода-
ны билеты. И все же план выполнения для запроса из лис тинга 7.8 довольно 
сложен – см. рис. 7.6.


Представления: использовать или не использовать 


Download 17,08 Mb.

Do'stlaringiz bilan baham:
1   ...   103   104   105   106   107   108   109   110   ...   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