求助.(100分)

  • 主题发起人 主题发起人 gggoobm
  • 开始时间 开始时间
G

gggoobm

Unregistered / Unconfirmed
GUEST, unregistred user!
在入门当中,碰到了问题请各位朋友帮忙.
采用adoquery+datasetprovider+clientdataset缓存方式.
要往clientdataset插入大量数据.
我用另一个adoquery进行查询,然后把逐个记录插入clientdataset发现速度超慢,四千条记录花了好几分钟.请问有没什么加速的方法,或者我应换别的什么方式.
另外,想找些热心的人当朋友.QQ:123370441.
 
不是吧,这么快就沉底.顶起......在线等....
 
.....又沉底了,分太少了吗?还是问题太简单了.在线等....
 
AppendRecord([szDjbh,copy(szDjbh,3,13),SMaskEditDWDM.text,SMaskEditDWMC.Text,PGetPickerDate(DateEditYWRQ),ComboBoxSFLX.text,
'','','',szJSFS,-1,szPJH1,szFylxmc,szBZRID,szBZRXM,GCzy.id,GCzy.name,'','','','','',szJDFX,szZy1,floattostr(fHjje),szYHZH,szPJLXH,szWLZH,szWLDW,szWLYH,szDWJB,szZXJB,'','',szpzlx,'2' ]);

用这种方式试试
 
,第一个回复的朋友,谢谢,可以一试,不过.应该差别不大吧...
 
帮你顶有没有分。。我不会。。嘿嘿。
 
按理来说,clientdataset插入不会很慢。

你做一下标志,看是打开adoquery进行查询慢 还是 逐个记录插入clientdataset慢。

如果还是插入clientdataset慢,你看看clientdataset被哪里控件关联住了,一般如果有大量记录插入,应该把一些dbgrid,dblookupCombobox...的关联去掉,插入完成了再挂上。
 
adoquery 查询记录花了2~5秒
插入clientdataset到显示数据为止,花了好几分钟,不能承受...插入量为千条记录左右.
显示用的是第三方控件dxdbgrid.
 
你把dxdbgrid去掉看看嘛,行不行?
 
with clientdataset do begin
disenablecontrols;
//插入
append;
fieldByName().as...:=..;
.....
post;
//提交
applyupdate(0);
enablecontrols;
end;
 
.as...快,还是value快.
 
我想,我得再解释清楚点:
主从表:M和D,还有另外一个表temp,现在想把temp表的数据插入到从表的缓存clientdataset中,我想不出直接插入的办法,所以添加了一个adoquery查询temp表,然后把查到的记录逐条插入clientdataset.我测了一下,两千条记录要超过一分钟.四万条的话,差不多等于死机了.
 
[:(]分太少,还是问题太简单了,怎么没人回答呀...[B)]
 
只能说 你的硬件不是很好吧?

虚拟表,跟内存大小还是很大关系的,你看看一个adoquery已经申请了很多内存,你还要再建立一个clientdataset,相当于花2倍的容量。
每条记录多少字节啊?你算一下,如果超出了你的硬件容量甚至超过2G,那就肯定要用到虚拟内存,速度就肯定快不了啊。
 
好像还是没有最优的答案呀,高手在哪,...
 
字段字节数?
 
22个字段左右2/3是numeric(18,4)其它的是varchar(20)或varchar(50);
 
真的没办法了吗?。。。。
 
这个问题无解的, 是MIDAS.DLL 的问题,它要appenddata,这一步如果你是剿状MASTER/DETIAL的,若MASTER有几百条的话,则appenddata,非常耗时,无解
请看
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3426790
 
真的无解???
无语。。。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部