我有以下功能:
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'
使用此函数查询运行速度非常慢,有没有办法改进它,我不认为我需要这里的功能?
由于
答案 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)
。