在Oracle中为最后两位数字创建索引

时间:2014-11-03 16:35:37

标签: oracle oracle11g indexing

我有一个庞大的表格,我无法再进行分区或子分区,也不允许进行任何更改。我想按批次查询其记录,并认为一个好方法是使用帐号中的最后两位数字(不会将任何其他字段拆分记录均匀)。

我想我至少需要以某种方式对其进行索引(记住我不能改变表以添加虚拟列)。

在这种情况下是否有任何类型的索引?

我正在使用Oracle 11gR2

1 个答案:

答案 0 :(得分:3)

您可以使用function based index

create index two_digits_idx on table_name (substr(account_number, -2));

此索引仅适用于以下查询:

select ...
  from table_name t ...
 where substr(account_number, -2) = '25' -- or any other two digits

对于使用索引,您需要在查询中使用与索引中相同的表达式。