C# & SQL Server大数据量插入方式对比
2014-06-16 15:26
309 查看
以下内容大部分来自:
/article/1694857.html
部分内容出自互联网,实验结果为亲测。
最近自己开发一个向数据库中插入大量历史数据的函数库,需要解决一个大数据量插入的效率问题。不用分析,我知道如果采取逐条数据插入的方式,那么效率肯定很低,光是那么多循环就知道很慢了。于是乎,我找到了上篇博客,知道了BulkCopy和TVPs方式。为了更好的了解其效率,我自己动手亲测了一下效果,测试的数据库位于本机。
(1)方式1:循环插入
View Code
-------------------------------------------------------------------------------------------------
直接看效果对比:
<1>第一次运行
<2>第二次和第三次运行
这里考虑到了SQL Server自身缓存的原因,所以进行了多次测试,不过数据量没有变。可以从上述结果中看出:TVPs方式不愧是新出的啊,一代更比一代强!
/article/1694857.html
部分内容出自互联网,实验结果为亲测。
最近自己开发一个向数据库中插入大量历史数据的函数库,需要解决一个大数据量插入的效率问题。不用分析,我知道如果采取逐条数据插入的方式,那么效率肯定很低,光是那么多循环就知道很慢了。于是乎,我找到了上篇博客,知道了BulkCopy和TVPs方式。为了更好的了解其效率,我自己动手亲测了一下效果,测试的数据库位于本机。
(1)方式1:循环插入
public static void Main(string[] args) { String conString = "Persist Security Info=False;User ID=sa;Password=scbj123!@#;Initial Catalog=testGR;Server=KLH-PC"; String strType = "BulkUDT"; String strTable = "BulkTestTable"; if (!CheckExistsObject(conString, strType, CheckType.isType)) { Console.WriteLine("类型{0}不存在", strType); if (CreateObject(conString, strType, CheckType.isType)) { Console.WriteLine("类型{0}创建成功!", strType); } } if (!CheckExistsObject(conString, strTable, CheckType.isTable)) { Console.WriteLine("表格{0}不存在", strTable); if (CreateObject(conString, strTable, CheckType.isTable)) { Console.WriteLine("表格{0}创建成功!", strTable); } } Console.WriteLine("=================================================="); //NormalInerst(conString); BulkInerst(conString); TVPsInerst(conString); Console.ReadKey(); }
View Code
-------------------------------------------------------------------------------------------------
直接看效果对比:
<1>第一次运行
<2>第二次和第三次运行
这里考虑到了SQL Server自身缓存的原因,所以进行了多次测试,不过数据量没有变。可以从上述结果中看出:TVPs方式不愧是新出的啊,一代更比一代强!
相关文章推荐
- C#向Sql Server中插入记录时单引号的处理
- C#向Sql Server中插入记录时单引号的处理
- C#读取Excel数据两种方式性能对比
- C#向Sql Server中插入记录时单引号的处理- 使用存储过程 .NET教程,C#语言
- 用C#同时向SQL Server插入多行数据
- C#向Sql Server中插入记录时单引号的处理
- C++的前景看法&C++和C#的对比
- C#向Sql Server中插入记录时单引号的处理 选择自 davidullua 的 Blog
- 使用ADO.NET和C#以编程方式创建 SQL Server 数据库
- 解决:c#中获取刚插入SQL SERVER的自动编号字段值。
- C#向Sql Server中插入记录时单引号的处理
- C#与SQL Server之间的数据类型对比及在VS2003中空值传递的解决办法(下)
- C#与SQL Server之间的数据类型对比及在VS2003中空值传递的解决办法(上)
- Sql Server实现C#中Split(new char[]{',','+'...}相仿的SplitEx函数!!
- C#与SQL Server之间的数据类型对比及在VS2005中空值传递
- C#向Sql Server中插入记录时单引号的处理
- C#与SQL Server之间的数据类型对比及在VS2003中空值传递的解决办法
- C#与SQL Server之间的数据类型对比及在VS2003中空值传递的解决办法
- 清除SQL Server数据缓存和执行计划缓存,查看执行计划的各种方式对比
- Visual C# .NET 以编程方式创建 SQL Server 数据库