关于Sql语句的执行速度问题?

fsroger 2006-12-02 07:16:29
create or replace function GetKindName(iSequence in number) return Varchar2
deterministic
is
type MyCurType is ref cursor;
MyCur MyCurtype;
a Varchar2(20);
SqlStr String(3000);
begin
SqlStr:='SELECT sKindName FROM Kind Where iSequence='||iSequence;
open MyCur for SqlStr;
FETCH MyCur INTO a;
RETURN a;
end GetKindName;

这自定义函数是返回一个类型的中文名称


第一条sql语句:select * from (select table_a.*,rownum as my_rownum from (Select sPersonName,iPersonCount, From xrecord ) table_a where rownum<=40560) where my_rownum>=40546

第二条sql语句:select * from (select table_a.*,rownum as my_rownum from (Select sPersonName,iPersonCount,GetKindName(iKind) From xrecord ) table_a where rownum<=40560) where my_rownum>=40546

为何增加了GetKindName(iKind)语句后,查询速度变得奇慢,而且 rownum越大,变得越慢,有什么解决的方法。此语句用左分页使用
...全文
202 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
fsroger 2006-12-03
  • 打赏
  • 举报
回复
其实,第一条sql语句查询起来并不忙的,效率也不会太差,我自己也测试过,主要为什么我加上这个getkindname(ikind)加上rownum越大就越忙?这个表我也加了索引,甚至自定义函数也加了索引。
to daixf_csdn,怎样调整?
圣殿骑士18 2006-12-02
  • 打赏
  • 举报
回复
sql套sql,这个sql写得效率太低了,
要知道数据库引擎的智能处理是有限度的,
分开写可以针对性的调整语句和索引,提高效率。
建议拆成多个sql语句,改成存储过程。

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧