如何提高向数据库批量插入记录的速度?

jjdown 2005-08-15 12:47:21
以下语句是将listbox里的记录批量的插入到表里,当listbox的记录数达到一千几百的时候,程序的处理速度非常慢,好像将系统的资源都用尽了,其他的应用程序(例如打开网页等都很慢),请问有什么方法可以提高程序的处理速度? 代码如下:

opensql:='select mxlb as lb from T_SYS_CSMX where mxmc='''+trim(combobox2.Text)+'''';
try
if pubquery.Active then pubquery.Close;
pubquery:=openquery(opensql,psession); //执行sql语句
except
showmessage('操作失败!');
end;
ii:=pubquery.FieldByName('lb').AsVariant;
for i := 0 to ListBox1.Count - 1 do
begin
exsql:= 'Insert into T_TMP_TAB1(YJTM,SJJ,FFRQ,BC,JSZBH,FDCZY) Values('+QuotedStr(ListBox1.Items[i])+','''+inttostr(ii)+''',to_char(sysdate,'+''''+'YYYY-MM-DD'+''''+'),'''+trim(Edit1.Text)+''','''+trim(Edit16.Text)+''','''+xtcs.srybh+''')';
try
execsql(exsql,psession);//执行sql语句
except
showmessage('操作失败!');
end;
end;
...全文
204 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnhxjtoa 2005-11-08
  • 打赏
  • 举报
回复
狂顶
jjdown 2005-08-16
  • 打赏
  • 举报
回复
请问如何多条语句一块提交?
newc_k 2005-08-16
  • 打赏
  • 举报
回复
李维做过试验,最终结论是大数据量用存贮过程可提高70%
opqhjb_2002 2005-08-16
  • 打赏
  • 举报
回复
用batchmove控件做批量处理。
cxj1976 2005-08-16
  • 打赏
  • 举报
回复
with pubquery do
begin
for i := 0 to ListBox1.Count - 1 do
begin
try
Insert;
FieldByName('YJTM').Value := ListBox1.Items[i];
//....
except
showmessage('操作失败!');
end;
end;
Post;
end;
diecode 2005-08-16
  • 打赏
  • 举报
回复
ADOQuery把数据缓冲在本地内存
把缓冲区开大点
记录插完之后,用ADOQuery的提交方法,一次性的更新到数据库中
快乐老猫 2005-08-16
  • 打赏
  • 举报
回复
1.利用 SQL SERVER的存储过程,减少网络传递和客户端资源。
2.使用批更新,减少与数据库提交更新的次数。
hanlin2004 2005-08-15
  • 打赏
  • 举报
回复
1.多条语句一块提交;
2.使用ADOQuery,利用ADOQuery增加数据,提交

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧