小编And*_*bka的帖子

一定数量的列后,SQL Server 中的 INSERT 性能下降

我正在开发一个具有将表格数据导出到指定数据库表的功​​能的应用程序。该应用程序使用INSERT语句将其数据导出到目标数据库。

插入是通过一个批处理INSERT语句完成的,每个 SQL 语句有 100 行INSERT(现在我不能使用BULK INSERTbcp)。

我注意到,当源数据中的列数超过某个数字(该数字不是固定的,取决于值的大小、每个中的行数INSERT等)时,导出时间会不成比例地增加。

例如,导出 50 000 行(500 条INSERT语句,每条语句 100 行)的随机字符串,每个字符串有 100 个字符,每个INSERT需要100 行:

3 秒,5 列
6 秒,10 列
56 秒,15 列
77 秒,20 列

请注意 10 列和 15 列之间的导出时间差异。我原以为 15 列的导出时间为 9-10 秒,但实际上要长 5 倍。在测试其他数据集的导出时,我发现了类似的性能下降。

为了确保问题不在我这边,我INSERT通过sqlcmd.exe. 我得到了类似的结果。

问题:如何让 SQL Server 像处理小列一样快速处理大量列?或者至少将性能下降的点“移动”到更多的列?

额外细节:

  • INSERT 查询是在本地 SQL Server Express 2014(64 位)版本 12.0.5000.0 上执行的;
  • 数据库恢复模式设置为简单;
  • 所有 …

performance sql-server insert sql-server-2014

4
推荐指数
1
解决办法
469
查看次数

标签 统计

insert ×1

performance ×1

sql-server ×1

sql-server-2014 ×1