C# 在数据库中插入多条记录的最快方法

C# 在数据库中插入多条记录的最快方法,c#,sql-server,sql-server-2005,C#,Sql Server,Sql Server 2005,我使用两种方法将记录插入数据库(100、1.000、10.000和100.000) (是一个没有主键和索引的表) 使用for并逐个插入 使用存储过程 当然,使用存储过程会更好。 我的问题是:1)如果我使用索引,操作是否会更快;2)是否有其他方法进行插入 PS:我使用ibatis作为ORM,如果这有什么不同的话不,我怀疑,如果你使用索引,它实际上会变慢。这是因为它必须更新索引和插入数据 如果您合理地确定数据不会有重复的键,请在插入所有行后添加索引。这样,它只构建一次,而不是在每次插入时添加和重

我使用两种方法将记录插入数据库(100、1.000、10.000和100.000) (是一个没有主键和索引的表)

  • 使用for并逐个插入
  • 使用存储过程
当然,使用存储过程会更好。 我的问题是:1)如果我使用索引,操作是否会更快;2)是否有其他方法进行插入


PS:我使用ibatis作为ORM,如果这有什么不同的话

不,我怀疑,如果你使用索引,它实际上会变慢。这是因为它必须更新索引和插入数据

如果您合理地确定数据不会有重复的键,请在插入所有行后添加索引。这样,它只构建一次,而不是在每次插入时添加和重新平衡


这是DBMS的一个功能。我知道我经常使用的SQL Server(不是SQL Server)也是如此。

我知道这有点离题,但很遗憾您没有使用SQL Server 2008,因为随着MERGE语句和用户定义表类型的出现,这方面有了巨大的改进(允许您将数据的“表”传递给存储过程或语句,以便一次插入/更新多条记录)

有关更多信息,请查看签出

它是为快速插入批量数据而设计的。我发现使用TableLock选项并将BatchSize设置为10000左右时,插入速度最快,但最好使用自己的数据测试不同的场景

您还可能发现以下内容很有用


已经讨论过:。

可能的副本如果您认为这是一个dup,请将其保留在评论中。