因此,将数据插入SQL Server数据库的BCP非常快。这是做什么让它如此之快?
答案 0 :(得分:10)
在SQL Server中,BCP输入的记录方式与传统的insert语句截然不同。 SQL决定如何处理事情取决于许多因素,有些是大多数开发人员从未考虑过的事情,比如数据库设置使用的恢复模型。
bcp使用与BULK INSERT和SqlBulkCopy类相同的工具。
这里有更多细节 http://msdn.microsoft.com/en-us/library/ms188365.aspx
最重要的是,这些批量操作记录的数据少于正常操作,并且能够指示SQL Server忽略对传入数据的传统检查和平衡。所有这些都可以使它更快。< / p>
答案 1 :(得分:8)
它作弊。
它对内部结构有深入的了解,能够将输入数据更直接地映射到内部。它可以跳过其他重量级操作(如解析,优化,事务,日志记录,延迟索引,隔离)。它可以做出适用于普通插入sql语句不能的每一行数据的假设。
基本上,它可以跳过使数据库成为数据库的大部分功能,然后在最后集中清理。
答案 2 :(得分:3)
我知道bcp和普通插入之间的主要区别是bcp不需要为每个单独的事务保留单独的事务日志条目。
答案 3 :(得分:0)
速度是因为他们使用SQL Server Native Client ODBC驱动程序的BCP API。根据微软的说法:
http://technet.microsoft.com/en-us/library/aa337544.aspx
bcp实用程序(Bcp.exe)是一个使用Bulk的命令行工具 复制程序(BCP)API ...
批量复制功能参考: