У меня есть таблица, в которой есть активные и неактивные записи, active = 1 для активных и active = 0 для неактивных.
У меня есть несколько индексов для этой таблицы, но мне нужны только индексы, поддерживаемые для активных записей, так как приложение запрашивает только активные данные. Неактивные данные необходимо хранить, поскольку они могут снова стать активными, но обычно это делается только при массовых обновлениях, которые в любом случае не будут использовать индекс.
Я заметил, что индексация неактивных записей (из которых все больше и больше активных записей) занимает довольно много места.
Есть ли способ в Oracle (10g) сделать что-то вроде этого:
create index an_idx on tab (active, col1, col2, ... , coln) where active = 1
Предыдущая попытка:
Я попытался использовать индекс на основе функции, чтобы установить для первого столбца значение NULL, когда active = 0
примерно так:
create index an_idx on tab (decode(active, 1, 1, null), col1, col2, ... , coln)
Но в этом случае Oracle по-прежнему индексирует неактивные столбцы.