ADO和Access数据保存效率问题。(4000数据30秒) 开发用 ADO+Acce数据库设计很简单。ID Num ValueText(32) Int Double要保存 4000 数据(或以上)到数据库,花时间30秒以上,要提升效率,要注意哪些点? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果只是为了保证写入(保存)的速度,那就是少建或者不建索引.操作最好使用SQL语句. 如果第一次导入的时候把主键与索引删除, 导入完后再加上。NCHAR改成VARCHAR 你一次有4000条数据就意味着肯定有数据源,数据源是什么?txt、xml或者???不可能一次输入4000条数据吧,所以你这不是数据保存的问题,而是数据导入的问题。 需知道你是如何更新, 如果是sql通过where关联,那么是有优化方案的 不是的,就是把一个 4000 的数组,数据保存到 ACCESS 。 LockType改成ltBatchOptimistic试试, 再说30S也不是很长的。 最好还是人为手动提交,特别是使用显示事务,如果只是单纯的把LockType改为ltBatchOptimistic,一来有可能数据库不支持该选项,二来就算支持的话,会有极大的内存消耗.4000笔数据,提交需要30多秒,如果是一笔笔提交的话,那么每秒提交就有一百多次,但是如果你每一次提交多笔的话,减少了提交的次数,是不是效率就会有所提升? 用7楼的方法可以提高效率,数据插入用SQL,另外,多条SQL一次性执行。var strSql: string;begin strSql := ''; ... for i:=1 to n do //一批插入n条 begin strSql := strSql+'insert into myTable(id,num,value) values...;'; //每条SQL间要加上分号';' end; ... ADOCommand.Execute; ...end; 我也是保存42000条记录是从EXCEL里读出保存到ACCESS里的,用时可能要半个来小时吧,现在也还没有找到好的办法让速度快点 要是不考虑保密性,桌面数据库还是用vfp的环境来弄比较快,10万条记录刷一下就给你弄完。 一条SQL语句搞定的还用半个小时? 不要建立索引 最好使用SQL语句 有二十二个字段,我是每次读出100条记录到结构数组里,再保存到ACCESS里,就这样一直下去,lake_cx 兄弟有好办法说一下 Access中执行:select * into table1 from [Sheet1$] in "C:\test.xls" "Excel 8.0;" xe2 webbrowser 在xp下空白 关于XML文件读取和写入 在飞机上向MM求婚成功,发贴散分!:-) 一个让我吐血的怪问题,关于控件的Visible属性。 请问:MessageDlg()按扭能用中文显示吗? 一个小问题; 为什么2000下和XP下计算结果会有差异? 怎样才能是应用程序的窗口,永远在最前面,比如我怎样是计算器,在最前面,点击别处也不会有变化呢? 骂: Delphi6的新特性 设计显示学生名次的名次表(时间较紧,老师要求近期交货,恳请各位汇编的高手务必相助,小弟不胜感激) 咨询SQL语句,order by,top相关 判斷輸入的數字在那個範圍
不可能一次输入4000条数据吧,所以你这不是数据保存的问题,而是数据导入的问题。
如果是sql通过where关联,那么是有优化方案的
var
strSql: string;
begin
strSql := '';
...
for i:=1 to n do //一批插入n条
begin
strSql := strSql+'insert into myTable(id,num,value) values...;'; //每条SQL间要加上分号';'
end;
...
ADOCommand.Execute;
...
end;
现在也还没有找到好的办法让速度快点
select * into table1 from [Sheet1$] in "C:\test.xls" "Excel 8.0;"