--- 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]] **Автор**:: ### Дополнительные материалы - ### Дочерние заметки