代码之家  ›  专栏  ›  技术社区  ›  John Gietzen

将数据表获取到SQL Server中最快的方法是什么?

  •  7
  • John Gietzen  · 技术社区  · 15 年前

    我在内存中有一个数据表,需要直接转储到SQL Server临时表中。

    在插入数据之后,我稍微转换一下,然后将这些记录的一个子集插入到一个永久表中。

    此操作最耗时的部分是将数据获取到临时表中。

    现在,我必须使用临时表,因为这个应用程序的多个副本同时运行,我需要一个隔离层,直到实际插入到永久表中为止。

    将C数据表大容量插入到SQL临时表中的最快方法是什么?

    我不能使用任何第三方工具来实现这一点,因为我正在转换内存中的数据。

    我目前的方法是创建一个参数化的sqlcommand:

    INSERT INTO #table (col1, col2, ... col200) VALUES (@col1, @col2, ... @col200)
    

    然后对每一行清除并设置参数并执行。

    必须有更有效的方法。我能在几秒钟内读写磁盘上的记录…

    2 回复  |  直到 15 年前
        1
  •  9
  •   SLaks    15 年前

    你应该使用 SqlBulkCopy class .

        2
  •  9
  •   AdaTheDev    15 年前

    SqlBulkCopy 会很快得到数据。

    blogged not that long ago 如何最大限度地提高性能。里面有一些统计数据和例子。我比较了2种技术,1种使用sqldataadapter,1种使用sqlbackcopy-底线是批量插入100k条记录,数据适配器方法花费了大约25秒,而sqlbackcopy仅花费了大约0.8秒。