Oracle10g 在Oracle中使用NVL时,查询运行缓慢

Oracle10g 在Oracle中使用NVL时,查询运行缓慢,oracle10g,Oracle10g,我有一个视图,当我查询这个视图时,它运行得很慢。然而,如果我删除NVL功能,它会运行得很快 我已经检查了执行计划,当使用NVL函数时,它没有使用任何索引。如果未使用NVL函数,则为索引。我试图将索引指定为提示,但没有帮助。不确定执行时是否考虑了提示 下面是用于创建视图的视图和查询 CREATE OR REPLACE FORCE VIEW "test"(a,b) select NVL(table1.a,table2.a) a,table2.b from table1 join table2 on

我有一个视图,当我查询这个视图时,它运行得很慢。然而,如果我删除NVL功能,它会运行得很快

我已经检查了执行计划,当使用NVL函数时,它没有使用任何索引。如果未使用NVL函数,则为索引。我试图将索引指定为提示,但没有帮助。不确定执行时是否考虑了提示

下面是用于创建视图的视图和查询

CREATE OR REPLACE FORCE VIEW  "test"(a,b)
select NVL(table1.a,table2.a) a,table2.b from table1 join table2 on table1.id=table2.id 
我在视图中使用的查询是

select * from test where a='XYZ'

有什么想法吗?我该怎么做才能使上述查询快速运行?

不确定您是否已经得到了答案-您需要使用基于函数的索引,使用NVL(a)。默认情况下,Oracle不会为空列编制索引,因此当您使用NVL进行查询时,它将执行完整的表扫描。

您得到了答案吗?