我有一个表有活动的非活动条目,active = 1 for active和active = 0 for inactive。Oracle:索引表的行的子集
我在这个表上有各种索引,但我只需要为活动条目维护的索引,因为应用程序仅查询活动数据。非活动数据需要保留,因为它可以再次变为活动状态,但通常只能使用批量更新来完成,因为批量更新不会使用索引。
我注意到对非活动条目编制索引(其中活动条目越来越多)需要相当多的空间。
是否有甲骨文(10G)的方式做这样的事情:
create index an_idx on tab (active, col1, col2, ... , coln) where active = 1
?
以前的尝试:
我试图用一个函数基于索引的第一列设置为null时active = 0
像这样:
create index an_idx on tab (decode(active, 1, 1, null), col1, col2, ... , coln)
但甲骨文似乎仍指数无效列在这种情况下。
如果节省空间,是你的目标,选择2将使意义IMO。 –