Oracle10g 在Oracle中使用NVL时,查询运行缓慢
我有一个视图,当我查询这个视图时,它运行得很慢。然而,如果我删除NVL功能,它会运行得很快 我已经检查了执行计划,当使用NVL函数时,它没有使用任何索引。如果未使用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
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进行查询时,它将执行完整的表扫描。您得到了答案吗?