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


 Короткие запросы и индексы Листинг 5.2



Download 17,08 Mb.
Pdf ko'rish
bet56/210
Sana25.06.2022
Hajmi17,08 Mb.
#704548
TuriРуководство
1   ...   52   53   54   55   56   57   58   59   ...   210
Bog'liq
OptimizZaprvPostgreSQL

68

Короткие запросы и индексы
Листинг 5.2 

Пример короткого запроса
SELECT f.flight_no,
f.scheduled_departure,
boarding_time,
p.last_name,
p.first_name,
bp.update_ts as pass_issued,
ff.level
FROM flight f
JOIN booking_leg bl ON bl.flight_id = f.flight_id
JOIN passenger p ON p.booking_id = bl.booking_id
JOIN account a ON a.account_id = p.account_id
JOIN boarding_pass bp ON bp.passenger_id = p.passenger_id
LEFT OUTER JOIN frequent_flyer ff ON ff.frequent_flyer_id = a.frequent_flyer_id
WHERE f.departure_airport = 'JFK'
AND f.arrival_airport = 'ORD'
AND f.scheduled_departure BETWEEN '2020-08-05' AND '2020-08-07'
Во-вторых, тип запроса не определяется размером результирующего мно-
жества. Запрос из лис тинга 5.3 выдает только одну строку; однако это длин-
ный запрос.
Листинг 5.3 

Длинный запрос, выводящий одну строку
SELECT avg(flight_length),
avg (passengers)
FROM ( SELECT flight_no,
scheduled_arrival – scheduled_departure AS flight_length,
count(passenger_id) passengers
FROM flight f
JOIN booking_leg bl ON bl.flight_id = f.flight_id
JOIN passenger p ON p.booking_id = bl.booking_id
GROUP BY 1,2 ) a
Так что же такое короткий запрос?
Запрос является коротким, когда количество строк, необходимых для получения резуль-
тата, невелико независимо от того, насколько велики задействованные таблицы. Корот-
кие запросы могут считывать все строки из маленьких таблиц, но лишь небольшой про-
цент строк из больших таблиц.
Насколько мал «небольшой процент»? Неудивительно, что это зависит от 
параметров системы, специфики приложения, фактических размеров таблиц 
и, возможно, других факторов. Во всяком случае, обычно менее 10 %. Позже 
в данной главе мы покажем, как определить эту границу.
Напротив, результат длинного запроса зависит от значительной части 
строк в большой таблице или нескольких таблицах.
Наша таксономия запросов похожа на общепринятое различие между за-
просами OLTP и OLAP. Все запросы OLTP короткие. Однако многим современ-


Выбор критериев фильтрации 

69
ным приложениям требуются запросы, возвращающие сотни строк, и они 
тоже могут быть короткими.
Почему лис тинг 5.1 представляет длинный запрос? Потому что для полу-
чения результата требуются все строки в таблице аэропортов. Почему запрос 
из лис тинга 5.2 – короткий? Потому что ему нужны данные всего по паре 
рейсов из примерно 200 000. Почему запрос из лис тинга 5.3 не является ко-
ротким? Потому что для расчета результатов необходимы данные каждого 
бронирования в системе.
Когда мы оптимизируем короткий запрос, мы знаем, что в конечном итоге 
мы выбираем относительно небольшое количество записей. Это означает, 
что цель оптимизации – уменьшить размер результирующего множества 
как можно раньше. Если на первых этапах выполнения запроса применяется 
самый строгий критерий фильтрации, дальнейшие сортировки, группировки 
и даже соединения будут менее затратными. В плане выполнения не должно 
быть сканирований больших таблиц. Однако для небольших таблиц полное 
сканирование может применяться, как показано на рис. 3.2 в главе 3.

Download 17,08 Mb.

Do'stlaringiz bilan baham:
1   ...   52   53   54   55   56   57   58   59   ...   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