базы данных с гибкими индексами? - PullRequest
4 голосов
/ 30 августа 2010

form wikipedia: http://en.wikipedia.org/wiki/Index_(database)

Некоторые базы данных расширяют возможности индексации, позволяя создавать индексы для функций или выражений.Например, для верхнего (last_name) можно создать индекс, который будет хранить в индексе только верхние регистры версии поля last_name.Иногда поддерживается и другой вариант использования «отфильтрованных» индексов, где записи индекса создаются только для тех записей, которые удовлетворяют некоторому условному выражению.Еще один аспект гибкости заключается в том, чтобы разрешить индексирование пользовательских функций, а также выражений, сформированных из ассортимента встроенных функций.

Что такое те базы данных, которые поддерживают гибкие индексы, которые могут быть:

  • В вычисляемом столбце, например: (col1 + col2) * 100
  • отфильтрованные индексы.
  • индексирование пользовательских функций.

а какова известная терминология для этой функции?

Ответы [ 3 ]

1 голос
/ 30 августа 2010

В oracle они называются индексами на основе функций.

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

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

0 голосов
/ 30 августа 2010

SQL Server 2000+ (как минимум) поддерживает индексы для столбцов на основе функций и вычисляемых столбцов. Индексы функций можно реплицировать с использованием индексированных представлений функций.

Есть условия, как всегда, но в основном вокруг детерминизма (который, вероятно, универсален)

SQL Server 2008+ имеет отфильтрованные индексы.

AFAIK, особого термина нет. Они просто индексы.

0 голосов
/ 30 августа 2010

Насколько я знаю, все основные RDBS поддерживают эту функцию. Я лично использовал его в MySQL и PostgreSQL, но я был бы шокирован, если бы он не был доступен в MSSQL и Oracle.

К сожалению, я не знаю специального термина для этого.

...