Учебное пособие Санкт-Петербург «бхв-петербург»


( '26' ), ( '27' ), ( '28' ), ( '29' ), ( '30' )



Download 1,88 Mb.
Pdf ko'rish
bet188/256
Sana21.02.2022
Hajmi1,88 Mb.
#24505
TuriУчебное пособие
1   ...   184   185   186   187   188   189   190   191   ...   256
Bog'liq
morgunov e p postgresql osnovy yazyka sql

( '26' ), ( '27' ), ( '28' ), ( '29' ), ( '30' )
) AS seat_rows ( seat_row )
CROSS JOIN
-- список номеров (позиций) кресел в ряду
( VALUES ( 'A' ), ( 'B' ), ( 'C' ), ( 'D' ), ( 'E' ),
( 'F' ), ( 'G' ), ( 'H' ), ( 'I' )
) AS letters ( letter )
WHERE
CASE WHEN fare_condition = 'Business'
THEN seat_row::integer <= max_seat_row_business
WHEN fare_condition = 'Economy'
THEN seat_row::integer > max_seat_row_business
AND seat_row::integer <= max_seat_row_economy
END
AND letter <= max_letter;
238


Контрольные вопросы и задания
Задание.
Модифицируйте команду с учетом того, что в салоне бизнес-класса
число мест в ряду должно быть меньше, чем в салоне экономического класса
(в приведенном решении мы для упрощения задачи принимали эти числа оди-
наковыми).
Попробуйте упростить подзапрос, отвечающий за формирование списка номе-
ров рядов кресел:
( VALUES ( '1' ), ( '2' ), ( '3' ), ( '4' ), ( '5' ), ...
Воспользуйтесь функцией generate_series, описанной в разделе документации
9.24 «Функции, возвращающие множества».
239



Глава 8
Индексы
Индексы позволяют повысить производительность базы данных. PostgreSQL поддерживает различ-
ные типы индексов. Мы ограничимся рассмотрением только индексов на основе B-дерева. Индекс —
специальная структура данных, которая связана с таблицей и создается на основе данных, содержа-
щихся в ней. Основная цель создания индексов — повышение производительности функционирова-
ния базы данных.
8.1. Общая информация
Строки в таблицах хранятся в неупорядоченном виде. При выполнении операций
выборки, обновления и удаления СУБД должна отыскать нужные строки. Для уско-
рения этого поиска и создается индекс. В принципе он организован таким образом:
на основе данных, содержащихся в конкретной строке таблицы, формируется зна-
чение элемента (записи) индекса, соответствующего этой строке. Для поддержания
соответствия между элементом индекса и строкой таблицы в каждый элемент поме-
щается указатель на строку. Индекс является упорядоченной структурой. Элементы
(записи) в нем хранятся в отсортированном виде, что значительно ускоряет поиск
данных в индексе. После отыскания в нем требуемой записи СУБД переходит к соот-
ветствующей строке таблицы по прямой ссылке. Записи индекса могут формировать-
ся на основе значений одного или нескольких полей соответствующих строк таблицы.
Значения этих полей могут комбинироваться и преобразовываться различными спо-
собами. Все это определяет разработчик базы данных при создании индекса.
При выполнении поиска конкретных строк в таблице специальная подсистема СУБД,
называемая планировщиком, проверяет, имеется ли для этой таблицы индекс, со-
зданный на основе тех же столбцов, что указаны, например, в условии предложения
WHERE. Если такой индекс существует, то планировщик оценивает целесообразность
его использования в данном конкретном случае. Если его использование целесооб-
разно, то сначала выполняется поиск необходимых значений в индексе, а затем, если
такие значения в нем найдены, производится обращение к таблице с использовани-
ем указателей, которые хранятся в записях индекса. Таким образом, полный перебор
241


Глава 8. Индексы
строк в таблице может быть заменен поиском в упорядоченном индексе и переходом
к строке таблицы по прямому указателю (ссылке).
Следует учитывать, что индексы требуют и некоторых накладных расходов на их со-
здание и поддержание в актуальном состоянии при выполнении обновлений данных
в таблицах. Поэтому использовать индексы нужно осмотрительно.
Когда вы создавали таблицы, то видели, что, как правило, для них предусматрива-
лось создание первичного ключа — PRIMARY KEY. В таких случаях СУБД сама создает
индекс, который позволяет поддерживать реализацию этого ограничения. Ведь при
наличии первичного ключа не допускается появление в таблице строк с одинаковы-
ми его значениями. Индекс позволяет выполнять проверку на дублирование очень
быстро.
Для некоторых таблиц, например «Посадочные талоны» (boarding_passes), было
предусмотрено и ограничение уникальности UNIQUE. В этих случаях СУБД также ав-
томатически создает индекс, который используется для обеспечения уникальности
значений.
Для того чтобы увидеть индексы, созданные для данной таблицы, нужно воспользо-
ваться командой утилиты psql:

Download 1,88 Mb.

Do'stlaringiz bilan baham:
1   ...   184   185   186   187   188   189   190   191   ...   256




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