Частичный индекс - Partial index

В базы данных, а частичный индекс, также известный как отфильтрованный индекс является индекс к которому применено некоторое условие, так что оно включает подмножество ряды в стол.

Это позволяет индексу оставаться маленьким, даже если таблица может быть довольно большой, и иметь исключительную избирательность.

Предположим, у вас есть таблица транзакций, в которой записи начинаются со STATUS = 'A' (активен), а затем могут проходить через другие статусы ('P' для ожидающих, 'W' для "обрабатываемых") до достижения окончательного статуса, 'F', после чего он больше не будет обрабатываться снова.

В PostgreSQL полезный частичный индекс может быть определен как:

Создайте индекс частичное_статус на txn_table (положение дел) куда положение дел в ('А', 'П', 'W');

Этот индекс не будет беспокоить сохранение какой-либо из миллионов строк, которые достигли «окончательного» статуса, «F», и позволит запросам, ищущим транзакции, которые все еще «нуждаются в доработке», осуществлять эффективный поиск по этому индексу.

Точно так же частичный индекс можно использовать для индексации только тех строк, в которых столбец не равен нулю, что будет полезно, когда столбец обычно равен нулю.

Создайте индекс partial_object_update на object_table (обновление) куда обновление является нет ноль;

Этот индекс позволит следующему запросу читать только обновленные кортежи:

Выбрать * из object_table куда обновление является нет ноль порядок к обновление;

Необязательно, чтобы условие совпадало с критерием индекса; В статье Стоунбрейкера ниже представлен ряд примеров с указателями, подобными следующим:

Создайте индекс partial_salary на наемный рабочий(возраст) куда зарплата > 2100;

Поддерживать

В SQL Server, этот тип индекса называется отфильтрованный индекс.[1]Частичные индексы поддерживаются в PostgreSQL начиная с версии 7.2, выпущенной в феврале 2002 г.[2]SQLite поддерживает частичные индексы, начиная с версии 3.8.0.[3]

MongoDB поддерживает частичные индексы в своем последнем выпуске V3.2.[4]

MySQL начиная с версии 8.0 не поддерживает частичные индексы. В MySQL термин «частичный индекс» иногда используется для обозначения индексов префиксов, где в индексе хранится только усеченный префикс каждого значения. Это еще один метод уменьшения размера индекса.[5]

Рекомендации

  1. ^ Документация по SQL Server 2008: рекомендации по созданию отфильтрованного индекса. Microsoft TechNet.
  2. ^ «Документация PostgreSQL: примечания к выпуску: выпуск 7.2». PostgreSQL. Получено 2009-10-09. Включение частичных индексов (Мартин ван Остерхаут)
  3. ^ «Частичные индексы». Получено 2014-02-04.
  4. ^ Примечания к выпуску MongoDB V302.
  5. ^ Рональд Брэдфорд (22 июля 2009 г.). «Понимание различных реализаций индекса MySQL».

внешняя ссылка