[英]Fastest way to insert many records in the database
我使用2种方法在数据库中插入记录(100,1.000,10.000和100.000)(是没有主键且没有索引的表)
当然,使用存储过程更好。 我的问题是:1)如果我使用索引将操作更快和2)是否有任何其他方式来插入
PS:我使用ibatis作为ORM,如果这有任何区别
看看SqlBulkCopy 。
它专为快速插入批量数据而设计。 我发现使用TableLock选项并设置大约10,000的BatchSize时速度最快,但最好用自己的数据测试不同的场景。
您可能还会发现以下内容非常有用。
不,我怀疑,如果你使用索引,它实际上会变慢 。 那是因为它必须更新索引以及插入数据。
如果您有理由确定数据没有重复键,请在插入所有行后添加索引。 这样,它构建了一次,而不是在每个插入上添加和重新平衡。
这是DBMS的功能。 我知道我经常使用的那个(不是SQLServer)。
我知道这有点偏离主题,但遗憾的是你没有使用SQL Server 2008,因为随着MERGE语句和用户定义的表类型(允许你通过)的出现,这个领域有了很大的改进。 - 在存储过程或语句的数据“表”中,以便您可以一次插入/更新许多记录。
有关更多信息,请查看http://www.sql-server-helper.com/sql-server-2008/merge-statement-with-table-valued-parameters.aspx
已经讨论过:将数据插入SQL服务器并获得最佳性能 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.