我有以下功能:
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'这个函数的查询速度很慢,有没有办法改善它,我觉得这里不需要函数?
谢谢
发布于 2017-03-11 03:57:17
这个函数真的不是必需的。它基本上是从一个查找表(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是驱动表。
发布于 2017-03-11 03:09:51
对于此查询:
Select status into l_value
from table1
where code = p_code and daytime = p_daytime;你想要一个索引。最好的索引是table1(code, daytime, status)。
https://stackoverflow.com/questions/42725694
复制相似问题