繁体   English   中英

在数据库中插入许多记录的最快方法

[英]Fastest way to insert many records in the database

我使用2种方法在数据库中插入记录(100,1.000,10.000和100.000)(是没有主键且没有索引的表)

  • 使用for和逐个插入
  • 使用存储过程

当然,使用存储过程更好。 我的问题是:1)如果我使用索引将操作更快和2)是否有任何其他方式来插入

PS:我使用ibatis作为ORM,如果这有任何区别

看看SqlBulkCopy

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

您可能还会发现以下内容非常有用。

SQLBulkCopy性能分析

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

如果您有理由确定数据没有重复键,请在插入所有行后添加索引。 这样,它构建了一次,而不是在每个插入上添加和重新平衡。

这是DBMS的功能。 我知道我经常使用的那个(不是SQLServer)。

我知道这有点偏离主题,但遗憾的是你没有使用SQL Server 2008,因为随着MERGE语句和用户定义的表类型(允许你通过)的出现,这个领域有了很大的改进。 - 在存储过程或语句的数据“表”中,以便您可以一次插入/更新许多记录。

有关更多信息,请查看http://www.sql-server-helper.com/sql-server-2008/merge-statement-with-table-valued-parameters.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM