一些插入记录的方法比较
有同事写了个工具,对C#中,两种插入记录到SQL SERVER数据库的方法进行了比较,发现二者的性能相差天与地:
1、SqlBulkCopy,批量插入方式,5万条记录,仅花4秒
2、拼凑出一条条SQL语句,单条插入,5万条记录,耗时7分钟
//方式一,批量插入
TRUNCATE TABLE table1;INSERT INTO [test].[dbo].[Table1] ([Int] ,[Long] ,[Float] ,[Real] ,[Date] ,[NText] ,[String1] ,[String2] ,[String3] ,[String4])SELECT [Int] ,[Long] ,[Float] ,[Real] ,[Date] ,[NText] ,[String1] ,[String2] ,[String3] ,[String4] FROM [test].[dbo].[Table2]
方式一里面,SqlBulkCopy,是将一个DataTable对象导入到数据库中,导入前,直接编辑这个DataTable就行了,比较方便。
另外,这个方法类似于SQL SERVER里面的BULK INSERT,而BULK INSERT在数据库为简单模式的情况下,是不产生日志的,所以这个SqlBulkCopy,也就是方式一应该是最快的。
SqlBulkCopy这个方法我觉得有点类似使用SqlDataAdapter,以往使用经验中,这个操作也比单条插入要快,但那时不知道是什么原因。
其实现在也不清楚是什么原因啊!