我应该如何为一个包含空值的日期列建立索引?
我们需要选择某个日期范围内的行以及日期为空的行。
我们使用Oracle 9.2及更高版本。
我找到的选项有:
对于1:表中有太多不同的值,无法使用位图索引
对于2:我必须为此目的添加一个字段,并在检索空日期行时更改查询
对于3:向索引添加一个不是真正所需的字段会很棘手
这种情况下最佳实践是什么? 提前感谢您的回答。
我读到的一些信息: Oracle日期索引 Oracle何时索引空列值?
我们的结构(翻译成英语)是:
我们使用Oracle 9.2及更高版本。
我找到的选项有:
- 在日期列上使用位图索引
- 在日期列和一个状态字段上分别建立索引,当日期为空时该字段的值为1
- 在日期列和另一个已授予非空属性的列上分别建立索引
对于1:表中有太多不同的值,无法使用位图索引
对于2:我必须为此目的添加一个字段,并在检索空日期行时更改查询
对于3:向索引添加一个不是真正所需的字段会很棘手
这种情况下最佳实践是什么? 提前感谢您的回答。
我读到的一些信息: Oracle日期索引 Oracle何时索引空列值?
编辑
我们的表有300,000条记录。每天插入和删除1,000到10,000条记录。280,000条记录的delivered_at日期为空。它是一种拣选缓冲区。我们的结构(翻译成英语)是:
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)
)