仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1505|回复: 7
打印 上一主题 下一主题

[学习教程] MSSQL网页编程之我的存储历程进修2

[复制链接]
若相依 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:21:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
在需要把许多新记录插入某个数据表的场合,DELAY_KEY_WRITE选项的作用将非常明显。另外,索引还会在硬盘上占用相当大的空间。因此应该只为最经常查询和最经常排序的数据列建立索引。注意,如果某个数据列包含许多重复的内容,为它建立索引就没有太大的实际效果。存储历程
营业体系必要一个关于条约形态的报表,次要显现条约的形态,区域,条约客户范例,条约金额,利钱金额等信息.
在数据库中存在4个表
crec01c,sysc01,sysc03d,crmc02分离是条约主表,地区及营业同伴,体系形态代码,法人信息表
上面第一个存储历程是我第一次写的,实行工夫是5秒
------------------效力较差的存储历程---------------------------
CREATETABLE#tmptba--创立一个一时表,用于贮存我们的了局
(
colIDintIDENTITY(1,1)PRIMARYKEYCLUSTERED,
khlxvarchar(20),
dqvarchar(20),
ywhbvarchar(40),
htztvarchar(20),
htbsint,
htjenumeric(13,2),
lxjenumeric(13,2)
)
DECLARE@bkhlxchar(1),@ikhidint,@cywdbdchar(10),@chtztchar(1),@njkjenumeric(13,2),@iqxint,@nhtyllnumeric(8,6)--FORProgress
DECLARE@t_khlxvarchar(20),@t_dqvarchar(20),@t_ywhbvarchar(40),@t_htztvarchar(20),@t_htbsint,@t_htjenumeric(13,2),@t_lxjenumeric(13,2)--FORINSERTINTO#tmptba
--DECLARE@indexint
--SET@index=1
DECLAREcur1CURSORFORSELECTbkhlx,ikhid,cywdbd,chtzt,njkje,iqx,nhtyllFROMcrec01c
OPENcur1
FETCHNEXTFROMcur1INTO@bkhlx,@ikhid,@cywdbd,@chtzt,@njkje,@iqx,@nhtyll
WHILE@@FETCH_STATUS=0
BEGIN
IF@bkhlx=1
BEGIN
SET@t_khlx=天然人
SET@t_dq=(SELECTvjgmcFROMsysc01WHEREcjgdm=left(@cywdbd,6))
END
ELSE
BEGIN
SET@t_khlx=法人
SET@t_dq=(SELECTvjgmcFROMsysc01WHEREcjgdm=(SELECTcbmdmFROMcrmc02WHEREfrid=@ikhid))
END
SET@t_htbs=1--@index--条约笔数

SET@t_ywhb=(SELECTvjgmcFROMsysc01WHEREcjgdm=@cywdbd)--营业同伴
SET@t_htzt=(SELECTvsjxcFROMsysc03dWHEREczddm=htztANDcsjxm=@chtzt)--条约形态
SET@t_htje=@njkje
SET@t_lxje=@njkje*@iqx*@nhtyll*0.001

INSERTINTO#tmptba(khlx,dq,ywhb,htzt,htbs,htje,lxje)VALUES(@t_khlx,@t_dq,@t_ywhb,@t_htzt,@t_htbs,@t_htje,@t_lxje)
--SET@index1
FETCHNEXTFROMcur1INTO@bkhlx,@ikhid,@cywdbd,@chtzt,@njkje,@iqx,@nhtyll
END
CLOSEcur1
DEALLOCATEcur1
SELECT*FROM#tmptba
GO
------------------效力较高的存储历程实行工夫是1秒---------------------------
CREATETABLE#tmptbl--创立一个一时表,用于贮存我们的了局
(
colIDintIDENTITY(1,1)PRIMARYKEYCLUSTERED,
khlxvarchar(20),
dqvarchar(20),
ywhbvarchar(40),
htztvarchar(20),
htbsint,
htjenumeric(13,2),
lxjenumeric(13,2)
)
INSERTINTO#tmptblSELECTCASEWHENa.bkhlx=1THEN天然人ELSE法人ENDASkhlx,dq=(SELECTvjgmcFROMsysc01WHEREcjgdm=left(a.cywdbd,6)),ywhb=(SELECTvjgmcFROMsysc01WHEREcjgdm=a.cywdbd),htzt=(SELECTvsjxcFROMsysc03dWHEREczddm=htztANDcsjxm=a.chtzt),htbs=1,htje=a.njkje,lxje=a.njkje*a.iqx*a.nhtyll*0.001FROMcrec01caWHEREa.bkhlx=1

INSERTINTO#tmptblSELECTCASEWHENa.bkhlx=1THEN天然人ELSE法人ENDASkhlx,dq=(SELECTvjgmcFROMsysc01WHEREcjgdm=(SELECTcbmdmFROMcrmc02WHEREfrid=a.ikhid)),ywhb=无,htzt=(SELECTvsjxcFROMsysc03dWHEREczddm=htztANDcsjxm=a.chtzt),htbs=1,htje=a.njkje,lxje=a.njkje*a.iqx*a.nhtyll*0.001FROMcrec01caWHEREa.bkhlx=2

SELECT*FROM#tmptbl
GO


能够看到,第二个存储历程只用了两条sql语句就完成了第一个存储历程的事情。
支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
兰色精灵 该用户已被删除
沙发
发表于 2015-1-19 09:27:30 | 只看该作者
这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否则点击没有反应。
飘灵儿 该用户已被删除
板凳
发表于 2015-2-5 18:51:11 | 只看该作者
Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。
精灵巫婆 该用户已被删除
地板
发表于 2015-2-13 06:38:15 | 只看该作者
无法深入到数据库系统层面去了解和探究
爱飞 该用户已被删除
5#
发表于 2015-3-3 18:09:17 | 只看该作者
发几份SQL课件,以飨阅者
变相怪杰 该用户已被删除
6#
发表于 2015-3-11 12:40:54 | 只看该作者
语句级快照和事务级快照终于为SQLServer的并发性能带来了突破。个人感觉语句级快照大家应该应用。事务级快照,如果是高并发系统还要慎用。如果一个用户总是被提示修改不成功要求重试时,会杀人的!
山那边是海 该用户已被删除
7#
发表于 2015-3-18 18:34:11 | 只看该作者
你可以简单地认为适合的就是好,不适合就是不好。
谁可相欹 该用户已被删除
8#
发表于 2015-3-26 14:02:51 | 只看该作者
sqlserver的痛苦之处在于有用文档的匮乏,很多只是表明的东西
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 18:08

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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