Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

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

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

создать  индекс  partial_status  в  txn_table  ( status ),  где  статус  в  ( 'A' ,  'P' ,  'W' );

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

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

создать  индекс  partial_object_update  в  таблице object_table  ( updated_on ),  где  updated_on  не равен  нулю ; 

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

выберите  *  из  таблицы_объектов,  где  updated_on  не является  нулевым порядком по updated_on ;    

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

создать  индекс  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]

Ссылки [ править ]

Внешние ссылки [ править ]