首页 > Oracle > Oracle 函数索引的妙用!
2014
03-02

Oracle 函数索引的妙用!

函数索引大家可能都有接触,而且在一些特殊的地方也比较常用,我这里也不对函数索引作过多的介绍,简单的来看2个例子:

上面个例子可能再简单不过,索引不存储null值,所以如果创建一般的索引,那这个查询sql是不会走索引的,这里可以用到nvl函数,来创建函数索引:

按照如上的办法,创建一个nvl函数索引,然后简单的修改一下sql,那这里就可以走索引了,这里还有另一种办法,可能大家用得不是很多,看如下创建索引的方式:

通过创建组合索引的方式,这里就不管object_id是否为空,都可以存储到索引当中了。

下面我们来看另外一个例子,虽然大家都知道了索引的扫描方式,在使用索引的时候,还是要注意该选择什么样是索引扫描合适,我们来看一下一个简单的sql:

在test表中,owner<>’SYS’的只有一条数据,sql选择了索引扫描方式,但是却选择了IFFS,这样整个索引都会扫描,这里能不能走index  range scan呢,我们来看下面一个索引的创建方式:

我这里也创建了一个函数索引,这样sql在扫描的时候,就会选择index range scan了,可以看到这两个执行计划中的一致读,选择index range scan方式扫描的一致读比选择iffs方式的一致读少很多。因为表中owner不等于SYS的数据很少,回表也很快。

最后编辑:
作者:Jerry
一个积极向上的小青年,热衷于分享--Focus on DB,BI,ETL