полевая индексация даты и времени оракула

Как мы выполняем индексацию на поле даты и времени в оракуле. Мы должны смочь искать в течение определенного года

Спасибо

10
задан Milee 17 May 2010 в 20:43
поделиться

3 ответа

Чтобы создать индекс в 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))

... которые администраторы баз данных страстно ненавидят.

8
ответ дан 4 December 2019 в 01:00
поделиться

Вы можете проиндексировать столбец 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'

Этот индекс также можно использовать для ответа на запросы для определенного месяца, дня или любого другого диапазона.

3
ответ дан 4 December 2019 в 01:00
поделиться

Добавьте индекс, который не привязан к столбцу, а выражение, извлекающее год из этого столбца:

create index sample_index on YourTable (extract(year from YourDateColumn)) tablesapce YourIndexSpace;

Когда вы запрашиваете таблицу с использованием этого выражения, Oracle будет использовать индекс.

0
ответ дан 4 December 2019 в 01:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: