Как мне индексировать столбец даты, когда некоторые строки имеют нулевые значения? Мы должны выбирать строки между диапазоном дат и строками с нулевыми датами.
Мы используем Oracle 9.2 и выше.
Параметры, которые я нашел
- Использование растрового индекса в столбце даты
- Использование столбца index on date и индекса в поле состояния, значение которого равно 1, когда дата равна null
- Использование столбца index on date и другого предоставленного столбца без нуля
Мои мысли о вариантах:
до 1: таблица должна иметь множество разных значений, чтобы использовать битмап-индекс
до 2: я должен добавить поле только для этой цели и изменить запрос, когда я хочу получить нулевые строки строк
до 3: блокировки сложны, чтобы добавить поле к индексу, который действительно не нужен
Какова наилучшая практика для этого случая? Спасибо заранее
Некоторая информация, которую я прочитал:
Индекс даты Oracle
Когда Oracle индексирует значения нулевого столбца?
Изменить
В нашей таблице 300 000 записей. От 1000 до 10 000 записей вставляются и удаляются каждый день. В 280 000 записей указана нулевая дата доставки. Это своего рода буфер сбора.
Наша структура (на английском языке):
create table orders
(
orderid VARCHAR2(6) not null,
customerid VARCHAR2(6) not null,
compartment VARCHAR2(8),
externalstorage NUMBER(1) default 0 not null,
created_at DATE not null,
last_update DATE not null,
latest_delivery DATE not null,
delivered_at DATE,
delivery_group VARCHAR2(9),
fast_order NUMBER(1) default 0 not null,
order_type NUMBER(1) default 0 not null,
produkt_group VARCHAR2(30)
)