Частичный индекс
В базах данных частичный индекс , также известный как фильтрованный индекс, представляет собой индекс , к которому применено некоторое условие, позволяющее включать подмножество строк в таблице .
Это позволяет индексу оставаться небольшим, даже если таблица может быть довольно большой, и иметь чрезвычайную избирательность.
Предположим, у вас есть таблица транзакций, записи в которой начинаются со STATUS = 'A' (активный), а затем могут проходить через другие статусы («P» для ожидания, «W» для «в работе»), прежде чем достичь окончательного статуса. «F», и в этот момент он больше не будет обрабатываться снова.
В PostgreSQL полезный частичный индекс может быть определен как:
create index partial_status on txn_table (status)
where status in ('A', 'P', 'W');
Этот индекс не будет беспокоить сохранение ни одной из миллионов строк, достигших «окончательного» статуса «F», и позволит запросам, ищущим транзакции, которые все еще «нужны в работе», эффективно выполнять поиск по этому индексу.
Аналогично, частичный индекс можно использовать для индексации только тех строк, в которых столбец не имеет значения NULL, что будет полезно, когда столбец обычно имеет значение NULL.
create index partial_object_update on object_table (updated_on)
where updated_on is not null;
Этот индекс позволит следующему запросу читать только обновленные кортежи:
select * from object_table
where updated_on is not null
order by updated_on;
Не обязательно, чтобы условие было таким же, как критерий индекса; В статье Стоунбрейкера ниже представлен ряд примеров с индексами, подобными следующим:
create index partial_salary on employee(age)
where salary > 2100;
Поддерживать
[ редактировать ]В SQL Server этот тип индекса называется фильтрованным индексом . [1]
Частичные индексы поддерживаются в PostgreSQL начиная с версии 7.2, выпущенной в феврале 2002 года. [2]
SQLite поддерживает частичные индексы, начиная с версии 3.8.0. [3]
MongoDB поддерживает частичные индексы, начиная с версии 3.2. [4]
Ссылки
[ редактировать ]- ^ Документация по SQL Server 2008: Рекомендации по проектированию фильтруемого индекса . Microsoft TechNet .
- ^ «Документация PostgreSQL: Примечания к выпуску: Версия 7.2» . ПостгреСБЛ . Проверено 9 октября 2009 г.
Включение частичных индексов (Мартин ван Остерхаут)
- ^ «Частичные индексы» . Проверено 4 февраля 2014 г.
- ^ Примечания к выпуску MongoDB V302 .