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



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

Листинг 7.3 

Использование ключевого слова MATERIALIZED
WITH flights_totals AS MATERIALIZED (
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 flight_id,
avg_price,
num_passengers
FROM flights_totals
WHERE departure_airport = 'ORD'
На рис. 7.1 представлен план выполнения для запроса из лис тинга 7.2, как 
он работает в PostgreSQL 12. Если добавить ключевое слово 
MATERIALIZE
, как 
в лис тинге 7.3, запрос выполняется по-старому, как показано на рис. 7.2.


Временные таблицы и общие табличные выражения 

139
Рис. 7.1 

План выполнения для CTE со встраиванием
До этих недавних изменений мы бы отговаривали разработчиков SQL от 
использования нескольких общих табличных выражений, при котором ин-
струкция SQL выглядит так:
WITH x AS (
SELECT ...
), y AS (
SELECT ... FROM t1 JOIN x
), z AS (
SELECT...
)
SELECT ...
FROM (
SELECT
(
SELECT ...
FROM c JOIN y ...
) b
) a JOIN z ...
Однако после изменений, появившихся в PostgreSQL 12, такие запросы стали 
намного более управляемыми. Мы по-прежнему призываем разработчиков SQL 
не навязывать неоптимальный план выполнения, но использование цепочки 


140

Длинные запросы: дополнительные приемы
общих табличных выражений намного лучше, чем использование последова-
тельности временных таблиц; в последнем случае оптимизатор беспомощен.
Рис. 7.2 

Принудительная материализация CTE
В заключение этого раздела хотим упомянуть, что существуют ситуации, 
когда полезно сохранять промежуточные результаты. Однако почти всегда 
есть способы лучше, чем использование временных таблиц. Мы обсудим 
другие варианты позже в этой главе.

Download 17,08 Mb.

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