PostgreSQL индексы

В этом учебном пособии вы узнаете, как создавать, удалять и переименовывать индексы в PostgreSQL с синтаксисом и примерами.

Что такое индекс в PostgreSQL?

Индекс - это метод настройки производительности, позволяющий быстрее извлекать записи. Индекс создает запись для каждого значения, которое появляется в индексированных столбцах.

Создать индекс

Вы можете создать индекс в PostgreSQL, используя оператор CREATE INDEX.

Синтаксис

Синтаксис для оператора CREATE INDEX в PostgreSQL:

CREATE [UNIQUE] INDEX [CONCURRENTLY] index_name
[ USING BTREE | HASH | GIST | SPGIST | GIN ]
ON table_name
(index_col1 [ASC | DESC],
index_col2 [ASC | DESC],
...
index_col_n [ASC | DESC]);
UNIQUE
Необязательный. Модификатор UNIQUE указывает, что комбинация значений в индексированных столбцах должна быть уникальной.
CONCURRENTLY
Необязательный. Когда индекс создан, он не заблокирует таблицу. По умолчанию таблица блокируется во время создания индекса.
index_name
Имя, которое нужно присвоить индексу.
table_name
Имя таблицы, в которой создается индекс.
index_col1, index_col2,... index_col_n
Столбцы для использования в индексе.
ASC
Необязательный. Индекс сортируется в порядке возрастания для этого столбца.
DESC
Необязательный. Индекс сортируется в порядке убывания для этого столбца.

Пример

Рассмотрим пример как создать индекс в PostgreSQL.
Например:

CREATE INDEX order_details_idx
ON order_details (order_date);

В этом примере оператор CREATE INDEX создаст индекс с именем order_details_idx, который состоит из поля order_date.

Unique Index

Чтобы создать уникальный индекс для таблицы, необходимо указать ключевое слово UNIQUE при создании индекса.
Например:

CREATE UNIQUE INDEX order_details_idx
ON order_details (order_date, note);

В этом примере мы создали уникальный индекс для таблицы order_details, который состоит из полей order_date и note, так что комбинация этих полей должна всегда содержать уникальное значение без дубликатов. Это отличный способ обеспечить целостность вашей базы данных, если вам требуются уникальные значения в столбцах, которые не являются частью вашего первичного ключа.

Удалить индекс

Вы можете удалить индекс в PostgreSQL, используя оператор DROP INDEX.

Синтаксис

Синтаксис удаления индекса с помощью оператора DROP INDEX в PostgreSQL:

DROP INDEX [CONCURRENTLY] [IF EXISTS] index_name
[ CASCADE | RESTRICT ];
CONCURRENTLY
Необязательный. Когда индекс удаляется, он не блокирует таблицу. По умолчанию таблица заблокирована, пока индекс удаляется из таблицы.
IF EXISTS
Необязательный. Если указано, оператор DROP INDEX не вызовет ошибку, если индекс не существует.
index_name
Название индекса для удаления.
CASCADE
Необязательный. Все объекты, которые зависят от этого индекса, также удаляются.
RESTRICT
Необязательный. Индекс не будет удален, если есть объекты, которые зависят от индекса.

Пример

Рассмотрим пример как удалить индекс в PostgreSQL.
Например:

DROP INDEX order_details_idx;

В этом примере мы удалили индекс с именем website_idx из таблицы sites.

Переименовать индекс

Вы можете переименовать индекс в PostgreSQL используя оператор ALTER INDEX.

Синтаксис

Синтаксис переименования индекса с помощью оператора ALTER INDEX:

ALTER INDEX [IF EXISTS] index_name,
RENAME TO new_index_name;
IF EXISTS
Необязательный. Если указано, оператор ALTER INDEX не вызовет ошибку, если индекс не существует.
index_name
Имя индекса, который вы хотите переименовать.
new_index_name
Новое имя для индекса.

Пример

Рассмотрим пример как переименовать индекс в PostgreSQL.
Например:

ALTER INDEX order_details_idx
RENAME TO od_new_index;

В этом примере мы переименовали индекс с именем order_details_idx в od_new_index.