NVL(eExpression1, eExpression2)
如果 eExpression1 的计算结果为 null 值,则 NVL( ) 返回 eExpression2。
如果 eExpression1 的计算结果不是 null 值,则返回 eExpression1。
eExpression1 和 eExpression2 可以是任意一种数据类型。
如果 eExpression1 与 eExpression2 的结果皆为 null 值,则 NVL( ) 返回 NULL。
1.创建测试表及模拟测试nvl函数语句
create table t64 as select * from dba_objects;
set autot trace
select * from t64 where nvl(SUBOBJECT_NAME,OBJECT_NAME)='DBA_USERS';
2.全表扫描执行计划及资源消耗
3.创建nvl函数索引
create index idx_t64 on t64(nvl(SUBOBJECT_NAME,OBJECT_NAME)) online;
4.1测试nvl空值时索引扫描效率,逻辑读从1238降低到6
4.2测试nvl非空值时索引扫描效率,逻辑读从1238降低到6,返回相同行数。