|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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语句就完成了第一个存储历程的事情。
支持大型的数据库。可以处理拥有上千万条记录的大型数据库。 |
|