目前有这样一个问题:需要对两个数据库同时进行操作,两库中的表一模一样,但是两个库又没有关联。同时需要操作的是插入和更新,同时更新的SQL语句是一条条的Update,大约有50多万条,同时插入的SQL语句也是一条条的Insert。 这两个操作加起来大概有120万的数据量要同时进行更新,又不能用存储过程(是上面必须规定用C#里面的事物操作),难题就在这里:
   如何让同时更新和插入要么全部成功,要么全部失败?
   以上无论是成功还是失败,如何让SQL的效率非常高的完成百万量同时的操作呢?   主要问题还是效率上的问题,现在写的代码,速度非常非常的慢(主要是SQL执行的非常慢),服务器配置是十六核CPU,主频都不低,内存也是十六G的。坐等高手解答~~

解决方案 »

  1.   

    UPDATE总会比INSERT慢
    最快的是BULK INSERT
      

  2.   


    SQL SERVER的吗???  能不能给个有用的链接?? 我找的都是乱七八糟的。
      

  3.   

    还是用标准的MSSQL语句操作数据库吧,这样会快些
      

  4.   

    -服务器对象
    --链接服务器
    ---Srv-link 
    MSSQL是这个吧
    Oracle中是DB LINK
      

  5.   

    写个通用方法,传入SqlConnection 和 Sql,循环执行
      

  6.   

    如果楼主不介意的话,可以将insert SQL语句转成csv文件,直接数据导入
    至于update可以在之前备份一下操作表,执行过程有失败就还原
    如果只能使用SQL语句,那就使用长连接吧,sqlconnection不要关
    声明2个connection和2个transaction,只要有异常2个transaction都回滚
      

  7.   

    使用sqlbulkCopy批量插入,速度很快
      

  8.   

    这种数据量应该是在做数据迁移,insert一定要按聚集索引的顺序执行,update如果是更新正行,不妨也生成insert,把需要update的行删除,然后insert做数据迁移不能靠死板的SQL语句,应该使用最快的文件导入,错了可以再来!
      

  9.   

    拼接下
    Insert into Table(column1,column2)
    value 
    (1,1)
    (2,2)
    (3,3)...
      

  10.   


    请问下,分开的Insert和这样拼接的Insert在效率上会有差别吗?8L 11L 朋友的方法我去看看可不可行。