为何2008与2000下自定义函数的查询执行效率差别很大 20分,无满意结帖,结帖人xfdlxf]

发布时间:2016-12-7 1:51:52 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"为何2008与2000下自定义函数的查询执行效率差别很大 20分,无满意结帖,结帖人xfdlxf]",主要涉及到为何2008与2000下自定义函数的查询执行效率差别很大 20分,无满意结帖,结帖人xfdlxf]方面的内容,对于为何2008与2000下自定义函数的查询执行效率差别很大 20分,无满意结帖,结帖人xfdlxf]感兴趣的同学可以参考一下。

语句: select * from scrw a  left join (select  gckh,ddlx,hbbz, zzbz,hbdh as hbdh,LC01.f_DDGCLTYQHB(HBDH) GCLTYQ from LLDD where hbdh='')b                                 on a.scrw_ddbh=b.hbdh  where a.scrw_rwdh='SCRW200904070221' 其中自定义函数f_DDGCLTYQHB:用以取相关订单的gcltyq要求的累加内容 CREATE function f_DDGCLTYQHB(@HBDH varchar(200)) returns varchar(2000) as begin   declare @str varchar(2000)   set @str = ''   select @str = @str + '*' + cast(GCLTYQ as varchar(2000)) from LLDD where [email protected]   set @str = right(@str , len(@str) - 1)   return(@str) End

2008中执行很慢

学习一下

select  gckh,ddlx,hbbz, zzbz,hbdh as hbdh,LC01.f_DDGCLTYQHB(HBDH) GCLTYQ from LLDD where hbdh='',,,语句where条件去掉,前面select *改成取其中几个字段,在2008中,都反映一样慢

学习

应该SQL2008性能高于2000啊。同样的硬件环境么?

电脑配置原因吧!

这个涉及到性能问题了吧

2008装在IA小机上,2000在至强中,配置也是小机的强多了

不清楚 学习 

请问各位安装过2008与windows2008的朋友,从2000升级到2008时有碰到类似问题没,谢谢

其中自定义函数f_DDGCLTYQHB:用以取相关订单的gcltyq要求的累加内容  CREATE function f_DDGCLTYQHB(@HBDH varchar(200))  returns varchar(2000)  as  begin    declare @str varchar(2000)    set @str = ''    select @str = @str + '*' + cast(GCLTYQ as varchar(2000)) from LLDD where [email protected]    set @str = right(@str , len(@str) - 1)    return(@str)  End 应该可以把这个函数改为join实现

引用 10 楼 xfdlxf 的回复:请问各位安装过2008与windows2008的朋友,从2000升级到2008时有碰到类似问题没,谢谢 没碰到过,学习,重装一次试试

即使改了,还是不知道为何这样组织的语句效率会低

楼上的兄弟没有半天,没法装好的

2008单台顺利话也得1个多小时,不知微软咋越做越难安装了,不贴近用户,2005过了没几年,又出2008,搞得该升级到2005,还是2008。多了些商业头脑,但没有为用户服务的头脑呀,在此唠叨了。

一直没用过sql2008的win2008,不知道是不是强了很多, d版的好的版本好像也没怎么听说

引用 13 楼 xfdlxf 的回复:即使改了,还是不知道为何这样组织的语句效率会低 哦,join可能不能替代。 不过,为DDLL的每条记录都执行函数,而这个函数是执行一次sql,如果DDLL记录数大,是会很慢了 select * from scrw a  left join (select  gckh,ddlx,hbbz, zzbz,hbdh as hbdh,LC01.f_DDGCLTYQHB(HBDH) GCLTYQ from LLDD where hbdh='')b                                 on a.scrw_ddbh=b.hbdh  where a.scrw_rwdh='SCRW200904070221'  除非能把on和where组合得到的对DDLL的限制先加到子查询里,这样只对限制后的DDLL的记录执行函数 是不是sql2008就没有这样优化,而sql2000能这样优化? 要看看执行计划,这2个系统分别是怎么优化的

不能直接上传图片,执行计划2008显的很杂,有兴趣的留下QQ,我发给各位

还是没朋友分析,,自己顶

HBDH列加上索引试试

加大点内存器  就快点了

引用 10 楼 xfdlxf 的回复:请问各位安装过2008与windows2008的朋友,从2000升级到2008时有碰到类似问题没,谢谢 就今天或者明天就要升级2008了

早就碰到了,项目就失败在2008上.. 现在换成Oracle了........... 不过用小项目还是2008好

 。。。

理论上不可能的啊 正准备玩2008呢,关注一下

可能是内存不足 同样配置的硬件 操作系统和数据 2008占用的内存比2000多几倍 所以剩下的可利用内存就小了 加大内存 2008从性能和多用户并发访问上优于2000

上一篇:[推荐] 【T-MAC学习笔记17之--浅谈UDF】 20feixianxxx]
下一篇:请问:该如何设计这个表结构 100leetow2003]

相关文章

相关评论