В этом учебном пособии вы узнаете, как создавать, удалять и переименовывать индексы в PostgreSQL с синтаксисом и примерами.
Что такое индекс в PostgreSQL?
Индекс - это метод настройки производительности, позволяющий быстрее извлекать записи. Индекс создает запись для каждого значения, которое появляется в индексированных столбцах.
Создать индекс
Вы можете создать индекс в PostgreSQL, используя оператор CREATE INDEX.
Синтаксис
Синтаксис для оператора CREATE INDEX в PostgreSQL:
[ 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.
Например:
ON order_details (order_date);
В этом примере оператор CREATE INDEX создаст индекс с именем order_details_idx, который состоит из поля order_date.
Unique Index
Чтобы создать уникальный индекс для таблицы, необходимо указать ключевое слово UNIQUE при создании индекса.
Например:
ON order_details (order_date, note);
В этом примере мы создали уникальный индекс для таблицы order_details, который состоит из полей order_date и note, так что комбинация этих полей должна всегда содержать уникальное значение без дубликатов. Это отличный способ обеспечить целостность вашей базы данных, если вам требуются уникальные значения в столбцах, которые не являются частью вашего первичного ключа.
Удалить индекс
Вы можете удалить индекс в PostgreSQL, используя оператор DROP INDEX.
Синтаксис
Синтаксис удаления индекса с помощью оператора DROP INDEX в PostgreSQL:
[ CASCADE | RESTRICT ];
- CONCURRENTLY
- Необязательный. Когда индекс удаляется, он не блокирует таблицу. По умолчанию таблица заблокирована, пока индекс удаляется из таблицы.
- IF EXISTS
- Необязательный. Если указано, оператор DROP INDEX не вызовет ошибку, если индекс не существует.
- index_name
- Название индекса для удаления.
- CASCADE
- Необязательный. Все объекты, которые зависят от этого индекса, также удаляются.
- RESTRICT
- Необязательный. Индекс не будет удален, если есть объекты, которые зависят от индекса.
Пример
Рассмотрим пример как удалить индекс в PostgreSQL.
Например:
В этом примере мы удалили индекс с именем website_idx из таблицы sites.
Переименовать индекс
Вы можете переименовать индекс в PostgreSQL используя оператор ALTER INDEX.
Синтаксис
Синтаксис переименования индекса с помощью оператора ALTER INDEX:
RENAME TO new_index_name;
- IF EXISTS
- Необязательный. Если указано, оператор ALTER INDEX не вызовет ошибку, если индекс не существует.
- index_name
- Имя индекса, который вы хотите переименовать.
- new_index_name
- Новое имя для индекса.
Пример
Рассмотрим пример как переименовать индекс в PostgreSQL.
Например:
RENAME TO od_new_index;
В этом примере мы переименовали индекс с именем order_details_idx в od_new_index.