Какие базы данных могут создавать индексы на основе функций? - PullRequest
2 голосов
/ 04 августа 2010

Я знаю, что этот тип индексов существует в Oracle. Старые версии на MySQL не могут создавать индексы на основе функций (спасибо, Google). А новые версии? Как насчет PostgreSQL, SQL Server и т. Д.

Ответы [ 3 ]

2 голосов
/ 04 августа 2010

Я не знаю внутренних деталей оракула, но postgres может создать индекс для выражения, который может быть функцией, из :

Поле индекса может быть выражением вычисляется из значений одного или больше столбцов строки таблицы. это функция может быть использована для быстрого получения доступ к данным на основе некоторых преобразование исходных данных. За Например, индекс рассчитывается на верхний (столбец) позволит пункт ГДЕ верхний (столбец) = «ДЖИМ», чтобы использовать индекс.

EDIT: MySQL, кажется, все еще подделывает это, см. виртуальные столбцы для деталей. Также некоторые обсуждения здесь . Не кажется очень активным.

DB2 делает это .

MS SQL не может этого сделать, но используя вычисляемые столбцы, вы можете получить аналогичные эффекты; см. обсуждение .

2 голосов
/ 04 августа 2010

PostgreSQL может создавать индексы для выражений, включая функции: Указатели для выражений

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

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

Добавьте столбец, который будет содержать значения функции, и добавьте индекс для этого столбца. Затем запустите триггеры для обновления столбца, содержащего значения функций. Ваши запросы должны измениться, замените function(params) на function_col.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...