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



Download 17,08 Mb.
Pdf ko'rish
bet155/210
Sana25.06.2022
Hajmi17,08 Mb.
#704548
TuriРуководство
1   ...   151   152   153   154   155   156   157   158   ...   210
Bog'liq
OptimizZaprvPostgreSQL

203
ф
ункЦии
 
и
 
Производительность
Закончим на этом наше краткое введение. Пришло время обратиться к цент-
ральной теме этой книги: как функции влияют на производительность? В гла-
ве 7 рассматривалась декомпозиция кода и в общих чертах обрисовывались 
различные последствия декомпозиции в императивных языках и в SQL. Было 
рассмотрено несколько возможных методов, а функции были упомянуты 
как заслуживающие более подробного обсуждения, которое и следует ниже.
Зачем создавать функции в PostgreSQL? В императивных языках исполь-
зование функций является очевидным выбором: функции повышают чита-
емость кода, облегчают повторное использование и не оказывают отрица-
тельного влияния на производительность. Напротив, функции в PostgreSQL 
могут как улучшить читаемость кода, так и ухудшить ее и могут значительно 
снизить производительность. Обратите внимание на слово «могут»; осталь-
ная часть главы посвящена способам разумного использования функций, 
повышающим производительность, а не снижающим ее.
Как использование функций может ухудшить 
производительность
В предыдущем разделе мы создали функцию 
num_passengers(int)
, которая 
вычисляет количество пассажиров на заданном рейсе. Эта функция отлично 
подходит для отдельного рейса, возвращая результат за 150 мс.
Давайте посмотрим, что произойдет, если эту функцию включить в список 
SELECT
. В лис тинге 11.13 выбираются все рейсы, вылетевшие из аэропорта 
О’Хара в период с 5 по 13 июля, и для каждого из этих рейсов рассчитывается 
количество пассажиров.
Листинг 11.13 

Использование функции в списке SELECT снижает 
производительность
SELECT flight_id,
num_passengers(flight_id) AS num_pass
FROM flight f
WHERE departure_airport = 'ORD'
AND scheduled_departure BETWEEN '2020-07-05' AND '2020-07-13'
Время выполнения этой инструкции составляет 3,5 секунды. Если же вмес-
то функции используется инструкция SQL, выполняющая точно такие же 
вычисления (лис тинг 11.14), время выполнения составит около 900 мс.
Откуда такая большая разница? В главе 7 мы объяснили, что представления 
и общие табличные выражения могут работать как оптимизации. Этот эффект 
еще более выражен в случае функций. Поскольку функция является настоящим 
черным ящиком для объемлющей инструкции SQL, PostgreSQL остается только 
выполнить каждую функцию столько раз, сколько выбрано строк.



Download 17,08 Mb.

Do'stlaringiz bilan baham:
1   ...   151   152   153   154   155   156   157   158   ...   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