【问题标题】:Efficent database access in terms of record insertion记录插入方面的高效数据库访问
【发布时间】:2011-11-30 03:35:29
【问题描述】:

我提前为“菜鸟”问题道歉,但我在 SQL 的大多数方面基本上仍然是新手。 我的问题源于 SQL 的艺术第二章的一部分。在标题为“稳定的数据库连接”的文章中,作者提到了几种将大量行插入数据库的方法。这是格式中的对应列表

测试;结果 依次连接/断开每条线路;每秒加载 7.4 行 连接一次,所有候选行单独插入;每秒加载 1,681 行 连接一次,将所有候选线插入 10 条线的数组中;每秒插入 5,914 行 连接一次,将所有候选线插入 100 条线的数组中;每秒插入 9,190 行

此外,作者还提到了“速度更快的直接加载技术”。

不幸的是,我并不完全理解插入数组的想法(如果有的话)。谁能详细说明作者所指的技术,包括插入数组和他引用的其他“直接加载技术”?

【问题讨论】:

    标签: sql tsql insert data-access-layer


    【解决方案1】:

    作者在展示

    INSERT INTO Table (Column) 
    VALUES ('myValue')
    

    只会这么快。

    这样做会明显更快

    INSERT INTO Table (Column) 
    VALUES ('myFirstValue'), 
    ('mySecondValue'), ...
    

    作者说有 10 个VALUES 项每秒插入 5,914 行,但是如果在单个 SQL 语句中有 100 项,那么加载率会上升到每秒 9,190 行。

    最后,“直接加载技术”是指批量插入操作。您可以通过 google msSQL bulk insert 找到大量关于上传文件然后将其处理成表格的教程。

    【讨论】:

    • 我会补充一点(至少在 SQL Server 上),您可以发送一个 XML 文件并从中插入行。它相当快。不如批量插入快,但与“格式化”INSERT INTO Table 一样快
    【解决方案2】:

    将大量数据插入 SQLServer 表的最快方法是使用称为“批量插入”的过程。有几种方法可以做到这一点。有一个 SQL Server 附带的命令行应用程序称为 bcp,有一个 TSQL 命令 BULK INSERT,还有一个 .NET sql 客户端对象 System.Data.SqlClient.SqlBulkCopy。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-27
      • 1970-01-01
      • 1970-01-01
      • 2011-06-10
      • 1970-01-01
      • 1970-01-01
      • 2016-12-20
      • 2017-03-15
      相关资源
      最近更新 更多