我使用DELPHI写了一个程序来处理报文,报文大小为300-500K,大概有3000行以上(不是每行格式都一样,报文按段来分),读每一行,都要把相关数据写到数据库。而且从报文中读出的数据还要和数据库中已有数据做比较后才存数据库。结果发现,速度很慢,处理一个报文(在多用户情况下),要30分钟以上。
测试发现,很多时间都花在到数据库存取数据上。
比如,我到数据库取一条数据,和报文中数据做比较。我是用adoquery做的。
adoquery.sql.text.....
adoquery.open;
....
但是,由于报文3000多行,循环打开adoquery,耗费了太多的时间。不知道有什么好办法去取数据????原来想在一开始,还没有循环的时候把参数取出来,但是,由于要取的参数和报文内容有关系,也就是sql语句后面的where 字段=值,值是变化的。写数据库我做了改进,全部使用insert或update语句执行。速度很快。谢谢大家。
测试发现,很多时间都花在到数据库存取数据上。
比如,我到数据库取一条数据,和报文中数据做比较。我是用adoquery做的。
adoquery.sql.text.....
adoquery.open;
....
但是,由于报文3000多行,循环打开adoquery,耗费了太多的时间。不知道有什么好办法去取数据????原来想在一开始,还没有循环的时候把参数取出来,但是,由于要取的参数和报文内容有关系,也就是sql语句后面的where 字段=值,值是变化的。写数据库我做了改进,全部使用insert或update语句执行。速度很快。谢谢大家。
解决方案 »
- 数据库表记录同步更新。
- 我有一个程序后台要访问远程数据库,但发布后很多用户的网络都是有限制的,无法远端访问数据库,请问有什么好的处理方法,马上给分
- 大家听过江西思创数码科技股份有限公司吗?
- 建立了一个讨论Delphi相关技术的QQ群: Delphi学堂 441492,欢迎加入!
- 关于制作发送邮件的应用程序
- 50分特急求:怎么判断Edit中的第一个字符是否是英文字母'a'..'z','A'..'Z'?!
- 这是一段可歌可泣,感人肺腑,地动山摇,荡气回肠的爱情故事.......
- 一个关于数据库连接的问题(高分相送)
- BDE如何导出XLS电子表格?????????????在线=,很急(分不够再加)
- 如何在delphi中调用执行windows的exe文件,刚学delphi,期待大家的帮助
- 请问各位大侠,做生产排程要用什么控件啊,任何语言均可?
- 关于3721的问题
try
insert
except
end;就可以少一次读并比较操作了
select ... from a where a.field1 in [你所需要的处理的信息] and .....或者楼上的方法是可以考虑的。