关于加快添加记录速度的问题?(50分)

  • 主题发起人 主题发起人 fstao
  • 开始时间 开始时间
F

fstao

Unregistered / Unconfirmed
GUEST, unregistred user!
delphi的问题:
数据库为Mssql7,假如有dbo.table1,我用tquery+tupdatesql对dbo.table1进行
添加数据。tquery的sql的语句:
select id,name from dbo.table1 order by id

tupdatesql的insert的语句:
insert into table1(id,name) values(:id,:name)

tquery的CachedUpdates=True,其Afterpost事件为:
with Query1 do
begin
Database1.StartTransaction;
try
ApplyUpdates;
Database1.Commit;
except
Database1.Rollback;
raise;
end;
CommitUpdates;
end;

我发现一个问题,当添加到10000条以上记录是,发现速度下降。有没有办法提高
速度?我听说过利用存储过程可以提高速度,那么如何在数据库端创建存储过程,
然后又如何用编程的方法来调用存储过程进行添加数据(好像是TStoredProc组件)?
 
你不应该在OnAfterPost中执行如此多的代码。每次都起一个事务。
建议在执行之前Database1.StartTransaction。执行之后Commit 或Rollback

Database1.StartTransaction;
try
Query1.Open;
ApplyUpdates;
Database1.Commit;
except
Database1.Rollback;
raise;
end;
CommitUpdates;

 
升级服务器.
 
因为你是从多个变量中获得插入值的,所以你可能
不能用存储过程,还是用nose的方法试一试.
 
>当添加到10000条以上记录是,发现速度下降
数据量大时,不管采用什么方法,速度都是要慢下来的!

如果仅仅是插入数据,最好是不要去浏览他!
给我的感觉是:浏览的数据量越大,内存消耗得越多!
每次只浏览需要的数据,或是把浏览数据的 DataSet 定期 Close 一下,
再打开,可以释放掉一些内存资源,
以保证可以持续工作。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
后退
顶部