我使用2种方法在数据库(100,1.000,10.000和100.000)中插入记录 (是没有主键且没有索引的表)
使用存储过程当然更好。 我的问题是:1)如果我使用索引将操作更快和2)是否有任何其他方式来插入
PS:我使用ibatis作为ORM,如果这有任何区别
答案 0 :(得分:5)
查看SqlBulkCopy。
它专为快速插入批量数据而设计。我发现使用TableLock选项并设置大约10,000的BatchSize时速度最快,但最好用自己的数据测试不同的场景。
您可能还会发现以下内容有用。
答案 1 :(得分:2)
不,我怀疑,如果您使用索引,它实际上将更慢。那是因为它必须更新索引以及插入数据。
如果您有理由确定数据没有重复键,请在插入所有行后添加索引。这样,它可以构建一次而不是在每个插入中添加和重新平衡。
这是DBMS的功能。我知道我经常使用的那个(不是SQLServer)是真的。
答案 2 :(得分:1)
我知道这有点偏离主题,但遗憾的是你没有使用SQL Server 2008,因为随着MERGE语句和用户定义的表类型的出现,这个领域已经有了很大的改进(允许您将数据的“表”传递给存储过程或语句,以便您可以一次性插入/更新许多记录。
有关更多信息,请查看http://www.sql-server-helper.com/sql-server-2008/merge-statement-with-table-valued-parameters.aspx
答案 3 :(得分:0)