delphi+oracle问题,用了事务后速度明显慢了. 为了保证两个表的一致性.在执行一大堆sql前设置了database1.StartTransaction 开始事务,成功后commit,但是发现不加事务前执行速度不到1秒,而现在竟然4/5秒了,速度怎么差别这么大呢? 这问题怎么能解决呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 sql语句就是简单的insert 表里面,语句简单. 有没有别人遇到同样的情况啊.这是个前台销售系统,等待几秒种是很明显的啊,原先不加事务的时候非常快的. 同意楼上的意见。把你的SQL贴出来看看。另外我用DOA来开发Oracle应用,性能巨强。 wDataM.dboracle.StartTransaction; try for i:=0 to Invs.Count-1 do begin ainvcom:=TInv_com(Invs.Objects[i]); SendInvCom(ainvcom); end; SendInvMain(inv_inv); wDataM.dboracle.commit; except wDataM.dboracle.Rollback; end;其中SendInvCom 和SendInvMain 两个函数,SendInvCom里面有一些操作但主要是下面 ss:='INSERT INTO XP_ARTI(SEQNO,SYJH,FPHM,RQSJ,' +' YYYH,COM_CODE,SPLB,GZ,SL,ZHHSJJ,LSJ,JG,ZKE,ZRE,LSZKFD,' +' HYZK,HYZKFD,YHZK,YHZKFD,SYSY,YSYJH,YFPHM,FLAG,DZXL,GYS,PP,' +' YHSEQNO,YJHX,YJHXZKFD)' +' VALUES (' +IntToStr(seqno)+','''+inv_syjh+''','+IntToStr(fphm) +',TO_DATE('''+rqsj+''',''YYYY/MM/DD HH24:MI:SS''),' +''''+yyyh+''','''+code+''','''+splb+''','''+gz +''','+FloatToStr(sl)+',0,'+FloatToStr(lsj)+','+FloatToStr(jg) +','+FloatToStr(zke)+','+FloatToStr(zre)+','+FloatToStr(lszkfd) +','+FloatToStr(hyzke)+','+FloatToStr(hyzkfd)+','+FloatToStr(yhzke) +','+FloatToStr(yhzkfd)+','+FloatToStr(sysy)+','''+ysyjh +''','+IntToStr(yfphm)+',''N'','''+dzxl+''',''' +yhgys+''','''+pp+''','+IntToStr(yhseqno)+','''+yjhxcode+''',' +FloatToStr(yjhxzkfd)+')'; oraQueryExec(ss); 建议你用ADOConnection或SQLConnection,或ODAC连接Oracle速度比TDataBase快很多 wDataM.dboracle.commit;放到SendInvCom函数中试试 如何对2台服务器数据库2张表里2个字段同步? 你们做项目用皮肤控件吗? GDI+路径保存线帽问题 请问:如何知道一个TBitmap对象占用内存空间的大小? 怎样用treeview实现数据的分类查询 数据库连接时间问题 请教:网页编程 绝对有难度 怎样制作不规则的图形窗体? 安卓里面怎么实现模拟 某一个按钮呢,要全局的呢。 作过图形方面的高手,帮忙看看, 字体放大的算法,指点一下 最后十分,求解树Treeview
性能巨强。
try
for i:=0 to Invs.Count-1 do
begin
ainvcom:=TInv_com(Invs.Objects[i]);
SendInvCom(ainvcom);
end; SendInvMain(inv_inv); wDataM.dboracle.commit;
except
wDataM.dboracle.Rollback;
end;
其中SendInvCom 和SendInvMain 两个函数,SendInvCom里面有一些操作但主要是下面
ss:='INSERT INTO XP_ARTI(SEQNO,SYJH,FPHM,RQSJ,'
+' YYYH,COM_CODE,SPLB,GZ,SL,ZHHSJJ,LSJ,JG,ZKE,ZRE,LSZKFD,'
+' HYZK,HYZKFD,YHZK,YHZKFD,SYSY,YSYJH,YFPHM,FLAG,DZXL,GYS,PP,'
+' YHSEQNO,YJHX,YJHXZKFD)'
+' VALUES ('
+IntToStr(seqno)+','''+inv_syjh+''','+IntToStr(fphm)
+',TO_DATE('''+rqsj+''',''YYYY/MM/DD HH24:MI:SS''),'
+''''+yyyh+''','''+code+''','''+splb+''','''+gz
+''','+FloatToStr(sl)+',0,'+FloatToStr(lsj)+','+FloatToStr(jg)
+','+FloatToStr(zke)+','+FloatToStr(zre)+','+FloatToStr(lszkfd)
+','+FloatToStr(hyzke)+','+FloatToStr(hyzkfd)+','+FloatToStr(yhzke)
+','+FloatToStr(yhzkfd)+','+FloatToStr(sysy)+','''+ysyjh
+''','+IntToStr(yfphm)+',''N'','''+dzxl+''','''
+yhgys+''','''+pp+''','+IntToStr(yhseqno)+','''+yjhxcode+''','
+FloatToStr(yjhxzkfd)+')';
oraQueryExec(ss);
连接Oracle速度比TDataBase快很多