您的位置:首页 > 大数据

C# & SQL Server大数据量插入方式对比

2014-06-16 15:26 309 查看
以下内容大部分来自:

/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方式不愧是新出的啊,一代更比一代强!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: