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