Как мы выполняем индексацию на поле даты и времени в оракуле. Мы должны смочь искать в течение определенного года
Спасибо
Чтобы создать индекс в Oracle, используйте:
CREATE INDEX your_index_name ON your_table_name(your_column_name)
Для получения дополнительной информации о создании индекса Oracle прочтите по этой ссылке .
Исправления и пояснения
Если вы используете функцию для выделения компонента даты (IE: EXTRACT или TRUNC ), индекс в столбце не поможет. Но индекс поможет, если вы укажете диапазон дат:
WHERE your_date_column BETWEEN TO_DATE('2010-01-01', 'YYYY-MM-DD')
AND TO_DATE('2010-12-31', 'YYYY-MM-DD')
Однако вы можете создавать в Oracle индексы на основе функций:
CREATE INDEX your_index_name
ON your_table_name(EXTRACT(YEAR FROM your_column_name))
... которые администраторы баз данных страстно ненавидят.
Вы можете проиндексировать столбец DATE (который хранит дату и время в Oracle) напрямую:
CREATE INDEX ix ON table (column)
Oracle сможет использовать этот индекс напрямую, если вы построите свой запрос таким образом, чтобы выполнить RANGE SCAN. Например, если требуется извлечь строки из 2010:
SELECT ...
FROM table
WHERE column >= DATE '2010-01-01'
AND column < DATE '2011-01-01'
Этот индекс также можно использовать для ответа на запросы для определенного месяца, дня или любого другого диапазона.
Добавьте индекс, который не привязан к столбцу, а выражение, извлекающее год из этого столбца:
create index sample_index on YourTable (extract(year from YourDateColumn)) tablesapce YourIndexSpace;
Когда вы запрашиваете таблицу с использованием этого выражения, Oracle будет использовать индекс.