开发用 ADO+Acce数据库设计很简单。ID        Num   Value
Text(32)  Int   Double要保存 4000 数据(或以上)到数据库,花时间30秒以上,要提升效率,要注意哪些点?

解决方案 »

  1.   

    如果只是为了保证写入(保存)的速度,那就是少建或者不建索引.操作最好使用SQL语句.
      

  2.   

    如果第一次导入的时候把主键与索引删除, 导入完后再加上。NCHAR改成VARCHAR
      

  3.   

    你一次有4000条数据就意味着肯定有数据源,数据源是什么?txt、xml或者???
    不可能一次输入4000条数据吧,所以你这不是数据保存的问题,而是数据导入的问题。
      

  4.   

    需知道你是如何更新, 
    如果是sql通过where关联,那么是有优化方案的
      

  5.   

    不是的,就是把一个 4000 的数组,数据保存到 ACCESS 。
      

  6.   

    LockType改成ltBatchOptimistic试试, 再说30S也不是很长的。
      

  7.   

    最好还是人为手动提交,特别是使用显示事务,如果只是单纯的把LockType改为ltBatchOptimistic,一来有可能数据库不支持该选项,二来就算支持的话,会有极大的内存消耗.4000笔数据,提交需要30多秒,如果是一笔笔提交的话,那么每秒提交就有一百多次,但是如果你每一次提交多笔的话,减少了提交的次数,是不是效率就会有所提升?
      

  8.   

    用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;
      

  9.   

    我也是保存42000条记录是从EXCEL里读出保存到ACCESS里的,用时可能要半个来小时吧,
    现在也还没有找到好的办法让速度快点
      

  10.   

    要是不考虑保密性,桌面数据库还是用vfp的环境来弄比较快,10万条记录刷一下就给你弄完。
      

  11.   

    一条SQL语句搞定的还用半个小时?
      

  12.   

    不要建立索引 最好使用SQL语句
      

  13.   

    有二十二个字段,我是每次读出100条记录到结构数组里,再保存到ACCESS里,就这样一直下去,lake_cx 兄弟有好办法说一下
      

  14.   

    Access中执行:
    select * into table1 from [Sheet1$] in "C:\test.xls" "Excel 8.0;"