我是使用INTERBASE数据库的;
我的程序中有个操作,就是把数十W条的记录插入到数据库;但是速度总是不尽人意(我每秒钟只能插入260条左右记录),我使用了如下的优化方法:
1、使用线程引导插入数据(线程优先级为tpHighest)
2、使用存储过程插入数据
3、给需要插入操作的表建立簇索引另:我的机器是好机器,不考虑机器因素了;大家说说,还有什么办法能提高数据插入速度吗?

解决方案 »

  1.   

    对于关系数据库,可以考虑的:
    (1)增大数据操纵缓冲区。
    (2)插入之前删除相关索引,完成之后再重建索引。(前面有人说过了)
    (3)插入之前删除相关触发器,完成之后再重建触发器。(原理同上,前提是不影响数据约束)
    (4)如果是Oracle,还有很多优化途径,可惜俺不熟悉IB。关注并学习...
      

  2.   

    学习中!
    我是个菜鸟,在学习中有过这样一个经历:
    (查XX历史档案<数年间>)(SQL SERVER)
    目标数据表非常大,经常要查询1年,2年等期间所有消费记录,即结果表也很大。
    使用SQL语句一次性查询效率非常低(不会多线程,别笑!),后来改为分解查询,即比方说查一年的,我分解成查各月(或更少时间段)数据,再累积到一个表中,速度快了不少。修改大批量数据时也一样操作。那次经历改变了我对SQL的一些看法。
    update  AAA set bbb='CCC' where (一年期间)

      循环各月
      update AAA set bbb='CCC' where (某月) 
    那个快!(试试数十万目标记录条件下)
    (我的理解:小批量操作对服务器的压力小,速度自然要快些,单次过大数据量的请求会给服务器造成很大压力,缓存毕竟有限。这有点象互联网网站攻击)
    如果结合多线程,应该更快。
    ----胡说一通,各位见笑!
      

  3.   

    我也有同样的烦恼。
    http://expert.csdn.net/Expert/topic/1889/1889621.xml?temp=.6576197
      

  4.   

    用SQL Server的DTS导入看看速度能不能提高,如果速度差别不大,建议你还是算了。因为软件毕竟受限制于整个计算机体系。