45 lines
2.5 KiB
Markdown
45 lines
2.5 KiB
Markdown
---
|
||
aliases:
|
||
tags:
|
||
- maturity/🌱
|
||
- best-practices
|
||
date: 2024-11-05
|
||
---
|
||
Часто в приложениях есть таблицы, которые содержат колонку статуса (`state`). Обычно статус разделяет записи на "обработанные" и "необработанные". Индекс нам часто нужен именно по необработанным данным. Создавая [[Частичный индекс|частичный индекс]] только по необработанным данным, мы можем ускорить выполнение запроса и уменьшить размер индекса.
|
||
|
||
Возьмем типичную табличку, в которой есть какие-то статусы мы хотим находить данные по этому статусу.
|
||
|
||
![300](../../meta/files/images/Pasted%20image%2020240331095959.png)
|
||
![600](../../meta/files/images/Pasted%20image%2020240331100144.png)
|
||
|
||
Часто появляется желание сделать индекс по полю статуса:
|
||
|
||
![600](../../meta/files/images/Снимок%20экрана%202024-03-31%20в%2010.07.02.png)
|
||
|
||
Но по факту мы индексируем поле, которое имеет небольшую [селективность](../../dev/database/Селективность%20колонки.md). Такой индекс не эффективный.
|
||
|
||
Хороший вариант в данном случае:
|
||
![600](../../meta/files/images/Снимок%20экрана%202024-03-31%20в%2010.13.39.png)
|
||
|
||
Почти идеальный:
|
||
![600](../../meta/files/images/Снимок%20экрана%202024-03-31%20в%2010.15.06.png)
|
||
![500](../../meta/files/images/Pasted%20image%2020240331101612.png)
|
||
|
||
Идеальный. Совмещаем и [[postgresql/Составной индекс в PostgreSQL|составной индекс]] и частичный.
|
||
|
||
![[../../meta/files/images/Pasted image 20241021225124.png]]
|
||
|
||
***
|
||
## Мета информация
|
||
**Область**:: [[../../meta/zero/00 Реляционная база данных|00 Реляционная база данных]]
|
||
**Родитель**::
|
||
**Источник**::
|
||
**Создана**:: [[2024-11-05]]
|
||
**Автор**::
|
||
### Дополнительные материалы
|
||
-
|
||
|
||
### Дочерние заметки
|
||
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
|
||
|