Insert Query与SqlBulkCopy—从性能角度来看,哪一个最适合将记录从一个“数据库”插入到另一个“数据库

本文关键字:数据库 记录 一个 另一个 插入 性能 SqlBulkCopy Query 哪一个 Insert | 更新日期: 2023-09-27 18:22:17

Insert QuerySqlBulkCopy-从一个DataBase到另一个DataBase 插入记录的性能最佳

我知道SQLBulkcopy用于大量记录。

如果记录少于10,那么哪一个更好。

请分享您的观点

Insert Query与SqlBulkCopy—从性能角度来看,哪一个最适合将记录从一个“数据库”插入到另一个“数据库

由于您要求少于10条记录,我建议您使用简单的插入查询。

但如果你想使用SQLBulkCopy,那么首先你应该知道什么时候使用它

阅读知识

批量插入

BULK INSERT命令是将文本文件中的数据引入SQL Server的进程内方法。因为它与Sqlservr.exe一起运行,所以它是将数据文件加载到SQL Server中的一种非常快速的方法

IMO,在您的情况下,使用SqlBulkCopy太过分了。。

如果行数少于1000行左右,则可以使用用户定义类型(UDT)作为传递给存储过程的表值参数(TVP)。超过该阈值后,SqlBulkCopy的性能增益开始超过其初始开销。SqlBulkCopy最适用于堆表(没有聚集索引的表)。

我发现这篇文章对我自己的解决方案很有帮助-https://www.sentryone.com/blog/sqlbulkcopy-vs-table-valued-parameters-bulk-loading-data-into-sql-server.

这里有一个链接,指向一个带有一些基准测试的网站。

我过去广泛使用过SqlBulkCopy,它非常有效。但是,您可能需要重新设计您的表,以便能够有效地使用它。例如,当您使用SqlBulkCopy时,您可能希望使用客户端生成的标识符,因此您必须发明一些方案,使您能够生成稳定、健壮和可预测的ID。这与典型的插入到具有自动生成标识列的表中非常不同。

作为SqlBulkCopy的替代方案,您可以使用我提供的链接中讨论的方法,其中您使用union allinsert into语句的组合,它也具有出色的性能。尽管如此,随着数据集的增加,我认为SqlBulkCopy将是更快的选择。这里可能需要一种混合方法,当记录数高时切换到SqlBulkCopy

我认为SqlBulkCopy将在更大的数据集中胜出,但您需要理解SqlBulkCopy操作可以用于放弃一些检查。这当然会加快速度,但也会允许您违反对数据库施加的条件。