设为首页 收藏本站
查看: 1415|回复: 0

[经验分享] sql server 存储过程的优化.(变量表,临时表的简单分析)

[复制链接]

尚未签到

发表于 2015-7-4 10:39:59 | 显示全部楼层 |阅读模式
昨日一朋友发来一段sql的存储过程(如下),让我看看能不能优化一下。
insert @T1
  select g_no,co_no,si_no,str_no,sum(ind_qty) as qty
  from instock_detail where  in_id = @id  group by g_no,co_no,si_no,str_no
  
  --?unitstock  -->保存在变量表中
  insert @T2
  select a.*  
  from  unitstock a,@T1 b
  where a.g_no =b.g_no  and a.co_no =b.co_no   
  and a.si_no =b.si_no and a.str_no=b.str_no

  delete unitstock
  from @T1 a
  where unitstock.g_no=a.g_no  and unitstock.co_no =a.co_no   
  and unitstock.si_no=a.si_no and unitstock.str_no=a.str_no  
  
  insert unitstock
  select g_no,co_no,si_no,str_no,sum(qty) as qty  from
  ( select  * from @T1   union all select * from @T2
  ) AA
  group by g_no,co_no,si_no,str_no

今日有空,作了一下变量表,临时表插入数据的性能分析。
1。变量表:
  declare @t table
(
id nvarchar(50),
supno nvarchar(50),
eta datetime
)
insert  @t
select top 10000 id,supno,eta from 表
  这一句执行sql需时间:16806ms

2。临时表:

create table #t
(
id nvarchar(50),
supno nvarchar(50),
eta datetime
)
insert #t
select top 10000 id,supno,eta
from 表
  这一句执行sql需时间:76ms

3。不创建临时表,直接插入到临时表

  select top 10000 id,supno,eta
into #t
from 表
  这一句执行sql需时间:30ms
  通过以上的分析,可以非常清晰的看出那个优,那个劣了。

以上只是简单的分析了一下。所以在存储过程中尽量合作临时表来存储临时数据,不要使用变量表。



  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-83037-1-1.html 上篇帖子: SQL Server 2000 ——系统表和系统视图 下篇帖子: 把SQL SERVER里表里的数据导出成为insert into 脚本
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表