В Oracle 11g, скажем, у меня есть таблица Task
, у которой есть столбец ProcessState
. Значения этой колонки могут быть Queued
, Running
и Complete
(в будущем может быть еще несколько государств). В таблице будет 50M + данных с 99,9% строк, имеющих Complete
в качестве значения столбца. Только несколько тысяч строк будут иметь значение Queued
/Running
.Какой индекс должен быть создан для столбцов с высокой степенью заполнения с высокой мощностью в оракуле?
Я читал, что хотя индекс bitmap
хорош для столбца с низкой мощностью, но используется в основном для статических таблиц.
Итак, какой индекс может улучшить запрос для Queued
/Running
задач? bitmap
или обычный не уникальный индекс b-tree
?
Кроме того, какой индекс может улучшить запрос для двоичного столбца (NUMBER(1,0)
с yes
/no
значениями)?
Отказ от ответственности: Я случайный dba.
В вашем случае предпочтительнее «растровый индекс». Вы сказали: «... 99,9% строк с полным ...», если вы ОБНОВЛЯете Task.ProcessState только с одного сеанса, у вас не будет никакого влияния на производительность, иначе сеансы должны будут сериализовать его доступ к индексу. –
Каков запрос, который вы пытаетесь улучшить? –
@a_horse_with_no_name Нравится это: 'select task_id from task, где processstate = 0' (ожидается только <500 строк). – mshsayem