Oracle 函数索引(部分索引)应用实例场景--栏位值只有几种情况
这里讲一个函数索引的应用场景,可以大大优化Sql效能:
背景:如果表中有一列的数据分布很不均匀,大部分是1,少部分是0,而且我们经常查询的刚好是0,在这种情况下,走全表扫描的话,有些浪费资源,如 果对该列建立索引的话,那些值为1的索引数据又有些浪费,因为我们很少去查询值为1的数据,所以我们只对值为0的数据建立索引。
采用部分索引前:
![](https://images0.cnblogs.com/blog2015/703450/201506/071913379109174.jpg)
如下请考虑是否可添加部分索引来优化。
create index SFIS1.INDEX_04 on SFIS1.C_SAP_RFC_C_T(case when TYPE='SPOS' then TYPE end);
SQL语句更新为:
SELECT *FROMSFIS1.C_SAP_RFC_C_TRCWHERE (CASEWHENTYPE='SPOS'THENTYPEEND)='SPOS'
![](https://images0.cnblogs.com/blog2015/703450/201506/071913568942675.jpg)
Impossible = I'm possible
Don't be the same, be better. Just do it.
You'll be there.