【问题标题】:SQL insert very slow [closed]SQL插入非常慢[关闭]
【发布时间】:2014-03-03 17:51:32
【问题描述】:

我希望每 5 秒在表中插入大约 10k 行。表未规范化,没有主键或任何索引。我注意到插入性能非常慢 - 10k 行在 20 秒内,这对我来说是不可接受的。

据我了解,索引只能提高搜索性能,但不能提高插入性能。这是真的吗?您对如何提高性能有任何建议吗?

【问题讨论】:

  • 该表是否包含任何外键约束?
  • 也只是为了验证它是否有任何插入触发器?
  • 这里已经回答了很多次了,你要的是SqlBulkCopy API。见这里:stackoverflow.com/questions/8981451/…。这不太可能与索引有关。

标签: sql sql-server


【解决方案1】:

除了 Miky 的建议之外,您还可以通过例如减少 varchar 字段的长度、使用枚举而不是文本等来提高优化数据库结构的性能。它也与参照完整性有关,首先我认为,无论如何你都应该规范化数据库。然后你可以继续优化查询。

【讨论】:

    【解决方案2】:

    你说得对,索引不会提高插入性能(如果有任何事情可能会因为额外的开销而伤害它)。

    如果插入速度很慢,可能是由于外部因素,例如运行 SQL Server 实例的硬件的 IO 性能,也可能是由于其他查询导致的数据库或表级别的争用。您需要运行性能分析器以确定原因。

    如果您按顺序执行插入,您可能需要考虑执行bulk insert operation,它会具有更好的性能特征。

    最后,值得深思的是,如果您每 5 秒执行 10K 次插入,您可能需要考虑使用 NoSQL 数据库进行大容量存储,因为对于此类应用程序而言,它们往往具有更好的性能特征频繁写入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-05
      • 1970-01-01
      • 2014-08-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多