digital-garden/dev/database/postgresql/Индекс в PostgreSQL.md
Struchkov Mark 7ef1ee250f
All checks were successful
continuous-integration/drone/push Build is passing
LVM и головные мюсли
2024-11-12 00:29:17 +03:00

54 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
aliases: []
tags:
- maturity/🌱
date: 2024-03-31
---
[[../../../meta/zero/00 PostgreSQL|PostgreSQL]] поддерживает несколько типов [[../Индекс базы данных|индексов]], каждый из которых предназначен для определённых задач. Выбор типа индекса зависит от структуры данных и характера запросов. В этом разделе приведены основные типы индексов, их особенности и случаи, когда их использование наиболее эффективно.
**Особенности:**
- Для **первичного ключа** индекс создается автоматически.
- Можно **отключить автоматическое обновление индекса** и настроить обновление вручную.
- **Распухание индексов** ([[Раздутие таблиц|bloat]]) — это проблема увеличения размера индексов со временем, требующая переиндексации.
- [[Создание индекса в PostgreSQL]]
- [[../Частичный индекс|Частичный индекс]]
- [[Составной индекс в PostgreSQL]]
**Типы индексов:**
- [[B-tree индекс в PostgreSQL|B-tree индекс]]
- [[Hash индекс в PostgreSQL|Hash индекс]]
- [[Gist индекс в PostgreSQL|Gist индекс]]
- [[SP-GiST индекс в PostgreSQL|SP-GiST индекс]]
- [[GIN индекс в PostgreSQL|GIN индекс]]
- [[BRIN индекс в PostgreSQL|BRIN индекс]]
**Влияние обновления строки на индекс**
- **Обновление индексированной колонки.** По факту мы добавляем новую запись в индекс, а старую забываем. Старая остается мертвым грузом ([[Раздутие таблиц|bloat]]), индекс распухает, его нужно убрать - [[Autovacuum]].
- **Обновление не индексированной колонки.** Если строка в таблице остается на той же [[../DB page|странице бд]], то есть было место на странице, то индекс не меняется. Если строка не помещается, то добавляется новая запись в индекс, а старая остается мертвым грузом ([[Раздутие таблиц|bloat]]), индекс распухает, его нужно убрать vacuum.
***
## Мета информация
**Область**:: [[../../../meta/zero/00 PostgreSQL|00 PostgreSQL]]
**Родитель**:: [[../Индекс базы данных|Индекс базы данных]]
**Источник**::
**Автор**::
**Создана**:: [[2024-03-31]]
### Дополнительные материалы
- [Доклад. Индексы в PostgreSQL. Как понять, что создавать](../../../source/lecture/Доклад.%20Индексы%20в%20PostgreSQL.%20Как%20понять,%20что%20создавать.md)
- [009. B-деревья. Система непересекающихся множеств - М. А. Бабенко - YouTube](https://www.youtube.com/watch?v=KFcpDTpoixo)
- [Индексы в PostgreSQL — 1 / Хабр](https://habr.com/ru/companies/postgrespro/articles/326096/)
- [Introduction of B+ Tree - GeeksforGeeks](https://www.geeksforgeeks.org/introduction-of-b-tree/)
### Дочерние заметки
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
<!-- SerializedQuery: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
- [[B-tree индекс в PostgreSQL]]
- [[BRIN индекс в PostgreSQL]]
- [[GIN индекс в PostgreSQL]]
- [[Gist индекс в PostgreSQL]]
- [[Hash индекс в PostgreSQL]]
- [[SP-GiST индекс в PostgreSQL]]
- [[Создание индекса в PostgreSQL]]
- [[Составной индекс в PostgreSQL]]
- [[Частичный индекс]]
<!-- SerializedQuery END -->