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



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

П
редставления

исПользовать
 
или
 
не
 
исПользовать
Представления – самый противоречивый объект базы данных. Они кажутся 
простыми для понимания, а преимущества создания представления выгля-
дит очевидными. Почему же они могут приводить к проблемам?


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

141
Хотя мы уверены, что большинство читателей создавали в своей практике 
хотя бы пару представлений, давайте дадим формальное определение. Вот 
самое простое:
Представление – это объект базы данных, в котором хранится запрос, определяющий 
виртуальную таблицу.
Представление – это виртуальная таблица в том смысле, что синтаксиче-
ски представления могут использоваться в запросах так же, как и таблицы. 
Однако они значительно отличаются от таблиц тем, что не хранят данные; 
в базе сохраняется только запрос, определяющий представление.
Посмотрим еще раз на запрос из лис тинга 6.14. Этот запрос вычисляет 
показатели для всех рейсов в схеме 
postgres_air
, но мы хотим использовать 
ту же логику расчета для конкретных рейсов, или отдельных аэропортов 
вылета, или для того и другого. Листинг 7.4 создает представление, которое 
инкапсулирует эту логику.
Листинг 7.4 

Создаем представление
CREATE VIEW flight_stats AS
SELECT bl.flight_id,
departure_airport,
(avg(price))::numeric(7,2) AS avg_price,
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
Теперь можно легко получить статистику для любого конкретного рейса:
SELECT *
FROM flight_stats
WHERE flight_id = 222183
Этот план запроса идентичен плану на рис. 6.13. Причина состоит в том
что на первом этапе обработки запроса синтаксический анализатор преоб-
разует представления во вложенные подзапросы.
В данном случае это работает в наших интересах, поскольку условие 
фильт рации помещается на уровень группировки. Но если использовать бо-
лее сложное условие поиска, чем сравнение с константой, результаты могут 
быть неутешительными. В лис тинге 7.5 статистика рейсов из представления 
flight_stats
ограничена датой вылета.



Download 17,08 Mb.

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