Insert Query与SqlBulkCopy—从性能角度来看,哪一个最适合将记录从一个“数据库”插入到另一个“数据库
本文关键字:数据库 记录 一个 另一个 插入 性能 SqlBulkCopy Query 哪一个 Insert | 更新日期: 2023-09-27 18:22:17
Insert Query
与SqlBulkCopy
-从一个DataBase
到另一个DataBase
插入记录的性能最佳
我知道SQLBulkcopy
用于大量记录。
如果记录少于10,那么哪一个更好。
请分享您的观点
由于您要求少于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 all
和insert into
语句的组合,它也具有出色的性能。尽管如此,随着数据集的增加,我认为SqlBulkCopy
将是更快的选择。这里可能需要一种混合方法,当记录数高时切换到SqlBulkCopy
。
我认为SqlBulkCopy
将在更大的数据集中胜出,但您需要理解SqlBulkCopy
操作可以用于放弃一些检查。这当然会加快速度,但也会允许您违反对数据库施加的条件。