48 lines
3.7 KiB
Markdown
48 lines
3.7 KiB
Markdown
|
---
|
|||
|
aliases:
|
|||
|
- covering indexes
|
|||
|
- покрывающего индекса
|
|||
|
tags:
|
|||
|
- maturity/🌱
|
|||
|
date: 2024-06-09
|
|||
|
---
|
|||
|
Покрывающий индекс — это [[Индекс в БД|индекс]], который включает в себя все колонки, необходимые для выполнения определенного запроса, без необходимости обращения к основной таблице данных.
|
|||
|
|
|||
|
Обычный индекс позволяет ускорить поиск по ключевой колонке, но при этом, чтобы получить данные из других колонок, СУБД все равно обращается к основной таблице. ==Покрывающий индекс, в отличие от обычного, содержит все необходимые для запроса колонки, что исключает необходимость обращения к таблице и, следовательно, улучшает производительность.==
|
|||
|
|
|||
|
Пример создания покрывающего индекса в [[../../meta/zero/00 PostgreSQL|PostgreSQL]]:
|
|||
|
|
|||
|
```sql
|
|||
|
CREATE INDEX idx_example ON table_name (column1) INCLUDE (column2);
|
|||
|
```
|
|||
|
|
|||
|
Такой индекс включает колонку `column1` для индексирования и добавляет `column2`, которая не индексируется, но хранится рядом с индексом. Это позволяет выполнять следующий запрос, не обращаясь к основной таблице:
|
|||
|
|
|||
|
```sql
|
|||
|
SELECT column1, column2 FROM table_name WHERE column1 = 'value';
|
|||
|
```
|
|||
|
|
|||
|
**Преимущества**:
|
|||
|
- Значительное улучшение производительности запросов, так как нет необходимости обращаться к основной таблице.
|
|||
|
- Уменьшение числа обращений к диску, особенно для часто используемых запросов с выборкой нескольких колонок.
|
|||
|
|
|||
|
**Недостатки**:
|
|||
|
- Покрывающие индексы могут занимать больше места в памяти, особенно если в них включены несколько дополнительных колонок.
|
|||
|
- Увеличение времени на операции вставки, обновления и удаления, так как индекс требует обновления при изменениях данных.
|
|||
|
|
|||
|
**Покрывающие индексы стоит использовать в следующих случаях:**
|
|||
|
- Для оптимизации часто выполняемых SELECT-запросов, которые выбирают несколько колонок.
|
|||
|
- Когда необходимо минимизировать количество обращений к диску, чтобы ускорить выполнение запросов.
|
|||
|
- Для [[Online Analytical Processing|OLAP]], где важно быстрое чтение данных без необходимости частых обновлений.
|
|||
|
***
|
|||
|
## Мета информация
|
|||
|
**Область**:: [[../../meta/zero/00 Базы Данных|00 Базы Данных]]
|
|||
|
**Родитель**:: [[Индекс в БД]]
|
|||
|
**Источник**::
|
|||
|
**Автор**::
|
|||
|
**Создана**:: [[2024-06-09]]
|
|||
|
### Дополнительные материалы
|
|||
|
-
|
|||
|
### Дочерние заметки
|
|||
|
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
|