sql具有功能慢的性能

时间:2017-03-10 18:49:31

标签: sql oracle

我有以下功能:

Create function code_status
( p_code varchar, p_daytime date);

Select status into l_value from table1 where code=p_code and daytime=p_daytime;

Return l_value;

End;

我在下面的SQL查询中使用它:

Select code, daytime, code_status(code, daytime) from table2
where daytime = '12 Jan 2017'

使用此函数查询运行速度非常慢,有没有办法改进它,我不认为我需要这里的功能?

由于

2 个答案:

答案 0 :(得分:1)

这个功能真的不需要。它基本上从查找表(table1)中获取单个值(status)。所以,加入它来获取状态,例如:

Select t2.code, t2.daytime, t1.status 
from table2 t2
left join table1 t1 on (t1.code=t2.code and t1.daytime=t2.daytime)
where t2.daytime = to_date('12 Jan 2017', 'DD Mon YYYY');

其中table1是状态的查找表,table2是驱动表。

答案 1 :(得分:0)

对于此查询:

Select status into l_value
from table1
where code = p_code and daytime = p_daytime;

你想要一个索引。最佳索引是table1(code, daytime, status)