Индекс функции ORACLE не обновляется - PullRequest
0 голосов
/ 30 октября 2018

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

Не работает, если значение поиска изменилось - я неправильно использовал детерминированную функцию? Как еще можно индексировать сортировку одной таблицы на основе значений из другой?

Это Standard Edition, поэтому у меня есть только индексы B-дерева.

1 Ответ

0 голосов
/ 30 октября 2018

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

Для решения этой проблемы вам абсолютно необходимо использовать индексы растровых соединений.

Единственное, что вы можете сделать, это сохранить значение подстановки в вашей базовой таблице и обновить значения при изменении таблицы подстановки. Но это плохой дизайн БД, и вы должны делать это, только если это абсолютно необходимо.

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