【问题标题】:Fastest way to copy data from one table to another using linq使用 linq 将数据从一个表复制到另一个表的最快方法
【发布时间】:2012-01-20 19:58:40
【问题描述】:

我在另一个 SQL 服务器上有一个表,我需要从一夜之间复制它。目标表的结构非常相似,所以我打算使用类似下面的代码。 来源-http://forums.asp.net/t/1322979.aspx/1

我还没有尝试过,但是在 linq 中是否有更好/更快的方法来做到这一点?

    //there exist two table list and listSecond
    DataClassesDataContext dataClass = new DataClassesDataContext(); //create the instance of the DataContext

    var str = from a in dataClass.lists select a;
    foreach (var val in str) // iterator the data from the list and insert them into the listSecond
    {
        listSecond ls = new listSecond();
        ls.ID = val.ID;
        ls.pid = val.pid;
        ls.url = val.url;
        dataClass.listSeconds.InsertOnSubmit(ls);

    }
    dataClass.SubmitChanges();
    Response.Write("success");

【问题讨论】:

  • 创建一个存储过程来插入选择的结果可能会更快。不确定 LINQ 会做什么,但您最终可能会收到大量 INSERT...VALUES 语句。您总是可以将存储过程添加到您的数据上下文中。
  • 只是为了添加一些上下文,以防有人从谷歌到这里。我正在经历“存储过程坏而 LINQ 好”的阶段,这就是我首先提出这个问题的原因。显然这是错误的态度,这是为工作选择正确工具的一个很好的例子。

标签: c# linq-to-sql


【解决方案1】:

使用 LINQ 插入大量数据不是一个好主意,除非是复杂的模式,在复制之前需要进行大量转换。除了将它们全部记录在事务日志中之外,它还将为插入的每一行创建一个单独的查询。

可以找到更快的解决方案here - 它使用SqlBulkCopy,这是一种在单个查询中插入大量数据的方法,无需事务日志记录来减慢速度。它会快一个数量级,我是根据个人使用这两种方法的经验告诉你的。

【讨论】:

    猜你喜欢
    • 2014-10-05
    • 1970-01-01
    • 2015-06-20
    • 1970-01-01
    • 2012-08-27
    相关资源
    最近更新 更多