添加数据速度问题?
我现在要一次向数据表中添加几千条记录,应该如何做速度才达到最快?不影响系统。请赐教! 问题点数:20、回复次数:14Top
1 楼78hgdong(赤脚)回复于 2005-05-17 21:44:52 得分 5
写存储过程来完成!用的是BDE还是ADO?Top
2 楼blitre(瘦死的老鼠比象大)回复于 2005-05-18 08:16:09 得分 0
TO 78hgdong(蜗牛跑步)
我用的是ADO啊,我想用ADOQuery实现添加啊。应该怎么做呢?Top
3 楼tgtcn(tgtcn)回复于 2005-05-18 08:16:14 得分 0
存储过程Top
4 楼blitre(瘦死的老鼠比象大)回复于 2005-05-18 08:54:02 得分 0
能不能用代码示例啊?假如我要添加这些字段:ID, Name,Age 表名为: StudentInfo 存储过程应该怎么写呢?又该如何调用呢?本人数据库方面很欠缺,对存储过程更是没怎么接触,请高手指教。Top
5 楼blitre(瘦死的老鼠比象大)回复于 2005-05-18 09:00:12 得分 0
我用的是ACCESS数据库,存储过程应该写在哪里呢?在DELPHI里用ADOQuery又如何去调用呢?Top
6 楼birdhaha(haha)回复于 2005-05-18 09:03:59 得分 5
用多线程吧,不过对于access数据库,不会提高多少速度。Top
7 楼jiomszhou(深蓝)回复于 2005-05-18 09:10:42 得分 0
请问怎么在CSDN中发问题啊,我注册了但是找不到发问题的地方谢谢:
顺便帮我看一个问题谢谢?:
DMBacu.zjyz.SQL.Clear;
DMBacu.zjyz.SQL.Add(' SELECT * FROM account_expressions16 where uid = '+ IntToStr(uid));
try
DMBacu.zjyz.Open;
if (DMBacu.zjyz.RecordCount > 0) then
uid := DMBacu.zjyz.FieldByName('uid').AsInteger;
k := 2;
Ftext := ' UPDATE account_expressions16 '
+ ' SET ';
DMBacu.expressions_result.SQL.Clear;
DMBacu.expressions_result.SQL.Add('SELECT * FROM account_coefficient');
DMBacu.expressions_result.Open;
DMBacu.expressions_result.First;
while (not DMBacu.expressions_result.Eof) and (k <= DMBacu.zjyz.Fields.Count -1) do
begin
Ftext := Ftext + DMBacu.zjyz.Fields[k].FullName + ' = ';
Faccount := DMBacu.zjyz.Fields[k].AsFloat;
Faccounts := Faccount;
Faccount := Faccount * 0.6 * DMBacu.expressions_result.FieldByName('quanzhong').AsFloat;
if (Faccount > DMBacu.expressions_result.FieldByName('average').AsFloat) then
begin
Faccount := Faccounts * 0.8 * DMBacu.expressions_result.FieldByName('quanzhong').AsFloat;
if (Faccount > DMBacu.expressions_result.FieldByName('allright').AsFloat) then
Faccount := Faccounts;
end
else
if (Faccount < DMBacu.expressions_result.FieldByName('inferior').AsFloat) then
Faccount := Faccounts * 0.2 * DMBacu.expressions_result.FieldByName('quanzhong').AsFloat
else
Faccount := Faccounts * 0.4 * DMBacu.expressions_result.FieldByName('quanzhong').AsFloat;
if (k <> DMBacu.zjyz.Fields.Count -1) then
Ftext := Ftext + FloatToStr(Faccount) + ', '
else
Ftext := Ftext + FloatToStr(Faccount);
DMBacu.expressions_result.Next;
k:= k+1;
end;
except
end;
程序执行到:
while (not DMBacu.expressions_result.Eof) and (k <= DMBacu.zjyz.Fields.Count -1) do
就跳到了END;
请问各路高手能帮我修改吗谢谢·
Top
8 楼blitre(瘦死的老鼠比象大)回复于 2005-05-18 09:40:19 得分 0
为什么没有高手指教?Top
9 楼blitre(瘦死的老鼠比象大)回复于 2005-05-18 10:29:30 得分 0
我用的是ACCESS数据库,怎么调用存储过程来添加记录呢?请会的举个例子好吗?Top
10 楼fenglaile(风清飘)回复于 2005-05-18 10:44:48 得分 5
ACCESS数据库,好像不能使用存储过程的,
只能以条一条的插入Top
11 楼tttk(网络芝麻)回复于 2005-05-18 11:31:30 得分 5
对于ACcess数据库来说,因为是在本地运行,几千条数据根本不用考虑效率问题。
如果要考虑人机界面,不妨在插入语句的循环过程中加入
Application.ProcessMessages 处理消息循环,以免用户的界面出现死机现象。
Access不支持批处理插入。Top
12 楼blitre(瘦死的老鼠比象大)回复于 2005-05-18 11:36:02 得分 0
但是我插入几千条记录时CPU资源就会上升到100%啊,而且速度很慢,该如何处理呢?Top
13 楼blitre(瘦死的老鼠比象大)回复于 2005-05-18 11:41:00 得分 0
请教 tttk(网络芝麻) (
现在主要是我一插入上千条记录时,我的CPU资源占用就为100%,而且插入2000多条记录就需要1分多钟时间,这正常吗?该怎么处理呢?我现在放在线程里执行还是没什么改观。Top
14 楼blitre(瘦死的老鼠比象大)回复于 2005-05-22 08:18:20 得分 0
还是没找到答案,极度失望。Top




