为什么数据更新的速度这么慢?(100分)

  • 主题发起人 主题发起人 DJ.
  • 开始时间 开始时间
D

DJ.

Unregistered / Unconfirmed
GUEST, unregistred user!
在下写了个C/S程序,采用Query和缓存更新,用DBGrid进行修改完成后
执行更新,更新的速度奇慢,大约1秒一条记录,怎么回事?
另外若一条记录先修改,然后删除,在更新时就会出错,是不是不应该?
 
非要用delphi写么?
 
贴出代码来看看
 
不会吧!!!???
 
不是updatesql慢。是数据库慢or 连接慢。
 
<a href="http://www.gislab.ecnu.edu.cn/delphibbs/dispq.asp?LID=231382">这里更惨</a>
 
1:第一个问题可能是数据库或是网线的问题。
2:因为数据库在你修改数据时都要对该条记录锁定,你修改之后没有提交,
它还是锁定状态,所以不让删除。
 
谢谢大家帮忙!
不可能是数据库或是网线的问题,因为查询的速度还可以。我用的是MS SQL SERVER.
下面是部分代码:

这是UpdateSql的DeleteSQL:

delete from zw_qy
where
kmdm = :OLD_kmdm and
jzr = :OLD_jzr and
pdlxdm = :OLD_pdlxdm and
pdh = :OLD_pdh and
bh = :OLD_bh and
zy = :OLD_zy and
jje = :OLD_jje and
dje = :OLD_dje and
jsfsdm = :OLD_jsfsdm and
zph = :OLD_zph and
yhr = :OLD_yhr and
mkdm = :OLD_mkdm and
xd = :OLD_xd

这是UpdateSql的ModifySQL:

update zw_qy
set
xd = :xd
where
kmdm = :OLD_kmdm and
jzr = :OLD_jzr and
pdlxdm = :OLD_pdlxdm and
pdh = :OLD_pdh and
bh = :OLD_bh and
zy = :OLD_zy and
jje = :OLD_jje and
dje = :OLD_dje and
jsfsdm = :OLD_jsfsdm and
zph = :OLD_zph and
yhr = :OLD_yhr and
mkdm = :OLD_mkdm and
xd = :OLD_xd

更新时:
myTable.ApplyUpdates;
 
如果表zw_qy的主键是ID,就这样写:
这是UpdateSql的DeleteSQL:

delete from zw_qy
where
id = :OLD_id

这是UpdateSql的ModifySQL:

update zw_qy
set
xd = :xd
where
id = :OLD_id
 
同意fstao,你的sql怎么需要where那么多列。难道非要所有列,才会
不重复吗?那最好还是建立一个唯一的列,建立一个主索引;或者
只是你该看看sql到底是什么意思。我看你的表八成是财务的,zy-摘要,jje-借方金额,dje-贷方金额,这些东西你丢到where子句里干嘛。
 
不同意daiqingbo,powerbuilder的所有sql都这么长,也没问题,
我也觉得delphi的query缓存更新有问题,尤其是大量纪录同时提交
 
applyupdates后
commitupdates
??
 
applyupdates后用commitupdates释放缓存。
若表中的索引过多也会影响表的更新速度。或者是象daiqingbo说的那样。
 
多人接受答案了。
 
后退
顶部