以前做过一个项目,因为特殊原因 在很多查询的中使用了函数取值,
如
表A
ID,name,age
表B
ID,Class,Score如果获得某个人的成绩信息 一般的查询
是这样写
select B.ID,A.Name,A.age,B.Class,B.score
from B left join A
on B.id=A.id但我曾经用过这样的方法 Create function getName(mID number) varchar2
as
ret varchar(20)
begin
select name into ret from A where ID=mID;
return ret;
end;然后再 select ID,getName(ID),score
from B
效率感觉比用Left join 效率要高?
这个只是个例子,实际上比这个可能要复杂一点
有谁能对这个问题进行解释一下吗?
如
表A
ID,name,age
表B
ID,Class,Score如果获得某个人的成绩信息 一般的查询
是这样写
select B.ID,A.Name,A.age,B.Class,B.score
from B left join A
on B.id=A.id但我曾经用过这样的方法 Create function getName(mID number) varchar2
as
ret varchar(20)
begin
select name into ret from A where ID=mID;
return ret;
end;然后再 select ID,getName(ID),score
from B
效率感觉比用Left join 效率要高?
这个只是个例子,实际上比这个可能要复杂一点
有谁能对这个问题进行解释一下吗?
你用function不会
如果是多条记录,似乎应该是left jion效率高才对!
不过记录多的话,通常left jion会快。
left jion会产生交叉积。
你用function不会你的观点是什么? function会快一点?