У меня есть таблица M, в которой есть столбцы CREATED_AT и MODIFIED_AT (Дата), и эта таблица очень большая.Мне нужно изменить или создать строки за последние 5 дней:
Select * from M where MODIFIED_AT >= trunc(sysdate)-5 OR CREATED_AT >= trunc(sysdate)-5
Для них нет индекса, и я боюсь, что Oracle выполнит полное сканирование и будет работать медленно.Какой тип индекса может быть создан, чтобы улучшить это?
MODIFIED_AT - Nullable, CREATED_AT - Not-Null.Лучше ли создать один индекс, включающий оба столбца, или 2 индекса для каждого столбца в отдельности?
ОБНОВЛЕНИЕ Есть еще одна вещь: некоторые из вас предложили создать объединение индексов на основе функций (ified_at, selected_at), вещьв том, что элементы в этой таблице изменяются очень редко, но обычно создаются большими кусками (создаются системой, изменяются при необходимости пользователями).Таким образом, может быть много элементов с тем же созданным и нулевым измененным значением.Но все равно будут некоторые элементы, для которых не указано значение variable_at.Имеет ли смысл создавать растровый индекс?Или любой другой способ использовать тот факт, что create_at будет одинаковым для больших кусков элементов в таблице M?
А также, имеет ли какое-то значение создание индекса ASC или DESC?