\d имя-таблицы
Например,
\d boarding_passes
...
Индексы:
"boarding_passes_pkey" PRIMARY KEY, btree (ticket_no, flight_id)
"boarding_passes_flight_id_boarding_no_key"
UNIQUE CONSTRAINT, btree (flight_id, boarding_no)
"boarding_passes_flight_id_seat_no_key"
UNIQUE CONSTRAINT, btree (flight_id, seat_no)
...
Каждый индекс, который был создан самой СУБД, имеет типовое имя, состоящее из
следующих компонентов:
– имени таблицы и суффикса pkey — для первичного ключа;
– имени таблицы, имен столбцов, по которым создан индекс, и суффикса key — для
уникального ключа.
242
8.1. Общая информация
В описании также присутствует список столбцов, по которым создан индекс, и тип
индекса — в данном случае это btree, т. е. B-дерево. PostgreSQL может создавать ин-
дексы различных типов, но по умолчанию используется так называемое B-дерево.
Такой индекс подходит для большинства типовых задач. В этой главе мы будем рас-
сматривать только индексы на основе B-дерева.
Наличие индекса может ускорить выборку строк из таблицы, если он создан по столб-
цам, на основе значений которых и производится выборка. Поэтому, как правило,
при разработке и эксплуатации баз данных не ограничиваются только индексами,
которые автоматически создает СУБД, а создают дополнительные индексы с учетом
наиболее часто выполняющихся выборок.
Для создания индексов предназначена команда
CREATE INDEX имя-индекса
ON имя-таблицы ( имя-столбца, ...);
В этой команде имя индекса можно не указывать. В качестве примера давайте созда-
дим индекс для таблицы «Аэропорты» по столбцу airport_name.
CREATE INDEX
ON airports ( airport_name );
CREATE INDEX
Посмотрим описание нового индекса:
\d airports
...
Индексы:
...
"airports_airport_name_idx" btree (airport_name)
...
Обратите внимание, что имя индекса, сформированное автоматически, включает
имя таблицы, имя столбца и суффикс idx.
Прежде чем приступить к экспериментам с индексами, нужно включить в утилите
psql секундомер с помощью следующей команды:
\timing on
243
Глава 8. Индексы
Когда необходимость в использовании секундомера отпадет, для его отключения
нужно будет сделать так:
\timing off
Теперь psql будет сообщать время, затраченное на выполнение всех команд.
Для практической проверки влияния индекса на скорость выполнения выборок сна-
чала выполним следующий запрос:
Достарыңызбен бөлісу: |