Oracle: Индексирование подмножества строк таблицы

У меня есть таблица, в которой есть активные и неактивные записи, active = 1 для активных и active = 0 для неактивных.

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

Я заметил, что индексация неактивных записей (которых становится все больше, чем активных) занимает довольно много места.

Есть ли в Oracle (10g) способ сделать что-то вроде этого:

создать индекс an_idx на вкладке (active, col1, col2, ..., coln), где active = 1 ?

Предыдущая попытка:

Я пробовал использовать индекс на основе функции, чтобы установить первый столбец равным нулю, когда active = 0 , например:

создать индекс an_idx на вкладке (decode (active, 1, 1, null), col1, col2, ..., coln)

Но в этом случае Oracle по-прежнему индексирует неактивные столбцы.

8
задан Clinton 5 October 2011 в 00:59
поделиться