--- aliases: tags: - maturity/🌱 - best-practices date: 2024-11-05 --- Представьте, что вам нужно поддерживать уникальность данных, например, адресов электронной почты в таблице базы данных. Однако в таблице есть строки, [[../Tombstone|помеченные как удаленные]] с помощью поля `deleted_at`, и они также остаются в базе данных. В такой ситуации создание уникального индекса на поле с электронной почтой становится невозможным из-за дублирующихся значений. [[Частичный индекс|Частичный индекс]] решает эту проблему, позволяя включать в индекс только записи, которые не помечены как удаленные. В PostgreSQL добавление уникального индекса для активных пользователей выглядит так: ```sql CREATE UNIQUE INDEX users_email_uniq ON users ( email ) WHERE deleted_at IS NULL; ``` В этом случае строки, у которых `deleted_at` не задан, включаются в индекс, а остальные игнорируются, что делает индекс более компактным и эффективным. *** ## Мета информация **Область**:: [[../../meta/zero/00 Реляционная база данных|00 Реляционная база данных]] **Родитель**:: **Источник**:: **Создана**:: [[2024-11-05]] **Автор**:: ### Дополнительные материалы - ### Дочерние заметки