用Insert Into语句插入1万条记录大概要45s,而用AddNew只要4s;
这是为什么?查了网上的资料都说Insert比AddNew快,但实际却相反?大家在一条条插入大量数据时一般通过什么方法?

解决方案 »

  1.   

    到底哪个速度快我没有测试过,不过我觉得还是用Insert好一点,最起码你可以多熟悉SQL,养成好的编程习惯,我自己觉得AddNew方法内部还是用的Insert,你是怎么测试的?
      

  2.   

    AddNew之后还要设置字段的值,设完了之后Update,可能还要commit transaction……
      

  3.   

    习惯使用Insert 没有比较过哪一个更快
      

  4.   

    可能加上update后,Insert会快。
    你既然测试了,就相信测试结果,书上的未必正确。
    “实践是检验真理的唯一标准”
      

  5.   

    这么巧,我前天也测试了,addnew确实比Inster快10倍左右。
    好像多次inster就要多次重复分析sql语句
    而addnew不考虑率这么多,仅仅add
      

  6.   

    大部分情况insert快,可以去sql server版问问邹建
      

  7.   

    你不会是每次都生成一个对象insert 吧 肯定是insert 快
      

  8.   

    操作的是Access数据库,由于是一条条插入,肯定是要每一条生成一个InSert语句的结果就是AddNew比Insert快多了
      

  9.   

    我感觉如果一次插入大量记录是AddNew 快,记录少时则是Insert快。
      

  10.   

    没测试过!!一直都用addnew
    方便啊!!!
      

  11.   

    当然addnew快了,调用insert时数据库每次都要对SQL语句进行语法检查分析
      

  12.   

    insert  大量数据如果不是一个个的弄是不是好点?   比如insert **** where **的那种是不是比add快呢?   我估计add优化了吧?
      

  13.   

    快?你的记时参考点是什么?
    记录集做更新操作不可能比SQL快,之所以微软引入这个对象是为了方便使用SELECT的返回数据,可不是为了用它做记录更新操作的,虽然可以做。效率低、占用资源大。
      

  14.   

    不大可能,你的测试代码应该有问题
    addnew 内部就是用 Insert 操作的快可能因为Cache 在客户端而没有真正更新到服务器
    你可以帖出测试代码
    大家论证
      

  15.   

    贴出测试代码,请不相信的朋友测试一下
    http://www.easewe.com/SoftWare/downSoft.aspx?software=27&from=fromother
      

  16.   

    sorry发错了,这个才是对的http://www.easewe.com/SoftWare/downSoft.aspx?id=27&from=fromother
      

  17.   

    我也是用AddNew大大提高了插入速度,数据库是access 
    一个表有100多万行数据,用insert明显慢了很多其它数据库是否这样就不知道了,SQL,DB2,..,等大型数据库我还是用insert
      

  18.   

    在我的映象中
    addnew快,我原来也是测试过
    不过,我也觉得可能是我们的参数有问题
    因为我看见别人的代码中 insert用得比较多,
    但我想别人水平比我强,怎么会范这样的错误
    还有也没有什么网文说这个问题
      

  19.   

    你的代码使用的是 DAO,
    他是专门针对 Access 优化的,使用 DAO 的Addnew 确实比 Insert 快,
    但这必须局限于本地 表操作 情况下 ,即 dbOpenTable 参数下.
    但对于 ADO ,Access : Insert 和 Addnew 的速度是差不多的,
    而 SQL server 下,Insert 比 Addnew 要快一点
    我已经做过测试
    在 ADO 即将要淘汰之际,想不到还有人要用DAO,晕啊
    看到 ADO.Net 的 DataSet 你就会知道什么是慢了
      

  20.   

    我的我Blog 有些关于优化的心得,欢迎参光指教
    http://blog.csdn.net/zlt982001/
      

  21.   

    就算用ADO,AddNew方法比InSert方法快多了
    --------------
    对11602条记录进行操作,ADO和DAO,AddNew和InSert方法的速度测试如下:
    DAO:AddNew:10s
         InSert:33sADO:AddNew:20s
        InSert:46s
    ----------------------
    觉得上面的结果不可信的,可再到这个地址下载测试程序:
    http://www.easewe.com/SoftWare/downSoft.aspx?id=27&from=fromother
      

  22.   

    当数据库为 Access 时,使用 AddNew 确实比 Insert 快一点
    当然如果你只是使用 单机的数据库,直接使用 RecordSet 更快,
    但是 在SQL Server 情况下,使用 Insert 比 使用 RecordSet 快一点
    我修改了你的例子,加入了 Command 来执行 SQL 语句,http://www.federal.net.cn/newtest.rar基本上是这样了,现在基本上很少使用 Access 数据库了
      

  23.   

    执行前请将 Data 中的两个数据库附加到 SQL Server 中
      

  24.   

    项目要求用ACCESS,用SQLSERVER不行啊
      

  25.   

    而且用你的程序执行出来对SqlServer的结果是Insert用了22s,AddNew用了33s还是比用addnew对access插入慢多了啊
      

  26.   

    写这么多,只是想论证这个数据库操作的效率问题,(包括Access和SQLServer)
    至于你实际要怎么用,取决于你自己
      

  27.   

    而且用你的程序执行出来对SqlServer的结果是Insert用了22s,AddNew用了33s还是比用addnew对access插入慢多了啊
    ====================================不要把Access和SQL Server进行比较在小数量情况下,插入 Access速度会比SQL  Server快些,但是大数据量网络情况下,就是SQL Server快了,一个曲线下降很快,一个曲线基本不变的。