【问题标题】:Inserting sorted data to table with clustered index将排序数据插入到具有聚集索引的表中
【发布时间】:2013-10-08 23:43:12
【问题描述】:

一个应用程序正在将已排序的数据逐行插入到表中,我想提高插入的性能。

我应该在运行应用程序之前(开始为空)还是在运行结束时创建聚集索引?

也许最好将数据导入临时表并在每 X 次插入时将其插入主表?

【问题讨论】:

  • 请注意 - 聚集索引没有说明您以后从表中获取行的顺序。
  • 您使用的是哪个版本的 SQL Server(更新问题标签)?数据的来源是什么? Excel,CSV?考虑使用 SQL Server 的导入工具,而不是编写自己的应用程序。
  • 来源是应用程序所做的计算,将每个结果插入到单独的查询中。

标签: sql-server-2005


【解决方案1】:

我不建议您在需要导入时删除和添加索引。

你评论了

来源是应用程序所做的计算,插入每个 产生一个单独的查询

这意味着您无法绕过单独的插入语句。所以下一个要考虑的解决方案是多线程您的应用程序。

让数据库通过索引来处理数据的排序,这将是你的应用程序和数据库之间的 IO 延迟导致延迟。

如果您可以在另一个线程等待 insert 完成时计算下一个结果,您将节省大量时间。

替代解决方案

您可以让应用程序将其结果写入文件(快速),然后使用 SSIS 或 BULK INSERT 将结果批量导入数据库。

【讨论】:

  • 我会尝试第二种方法。谢谢。
猜你喜欢
  • 1970-01-01
  • 2012-07-21
  • 2013-06-04
  • 1970-01-01
  • 2015-10-13
  • 2015-07-04
  • 2017-04-04
  • 2021-12-14
  • 1970-01-01
相关资源
最近更新 更多