我的程序搜索一些信息,
这些信息的内容是长度为20到300的字符串,
如:
ftp://192.168.32.12/movie/kingkong/all.rmvb
ftp://192.168.51.6/电影/中国/香港/周星驰/功夫/01.rmvb
...
一般情况下,总共有近10万条记录我的程序现在是搜索到一条记录,马上就insert如数据库,然后继续搜索,
我感觉速度上有点慢如果将搜索到的记录全部写到文本文件中,等搜索结束之后再一次性写入数据库。
这样行不?
速度会不会比逐条insert快呢?谢谢

解决方案 »

  1.   

    写到文本文件中后,直接用DTS导入即可。
      

  2.   

    为什么不直接用
    insert tb select ... from xx where ....呢?
      

  3.   

    我觉得还是先导成txt文档,然后用DTS,便于维护吧
      

  4.   

    如果是在不同的数据库间 就不好用insert tb..  select ... from table
     , 如何快速插入数据呢?
    写到文本文件中后,直接用DTS导入 我之前试过,仍然是比较慢的。
    不知大家有何意见!
      

  5.   

    我感觉楼主的意思是:数据是程序一条一条慢慢产生的。
    他不想每产生一条记录就插入到数据库中,而想等到达一定量后,再插入到数据库中。
    这样可以减少I/O读取次数。所以觉得邹老大的insert tb select ... from xx where ....应该不行吧。但是,我想如果每条记录都写到txt文档中,然后再bcp或DTS到数据库中, 这样的做法应该也不会快到哪里吧。因为I/O次数不但没有减少,反而增加了。呵呵, 我也没什么好的方法。要不在内存中维护一张类似中间表。记录先插入到内存的中间表中,等数据到一定数量时,然后再写到数据库去。
    这样,用空间来换时间, 应该快点。不知道诸位老大,有何高见。
      

  6.   

    楼上:呵呵, 我也没什么好的方法。要不在内存中维护一张类似中间表。记录先插入到内存的中间表中,等数据到一定数量时,然后再写到数据库去。
    这样,用空间来换时间, 应该快点中间表可以用临时表,个人认为临时表相当于内存表
    CREATE TABLE #Tmp
    再用
    insert tb select ... from #Tmp应该会快 我以前试过