当前位置: 首页 > news >正文

宗亲网站建设建议用手机什么软件做网站

宗亲网站建设建议,用手机什么软件做网站,wordpress后台not found,网站建设语言学什么在SQL Server 中插入一条数据使用Insert语句#xff0c;但是如果想要批量插入一堆数据的话#xff0c;循环使用Insert不仅效率低#xff0c;而且会导致SQL一系统性能问题。下面介绍SQL Server支持的两种批量数据插入方法#xff1a;Bulk和表值参数(Table-Valued Parameters…在SQL Server 中插入一条数据使用Insert语句但是如果想要批量插入一堆数据的话循环使用Insert不仅效率低而且会导致SQL一系统性能问题。下面介绍SQL Server支持的两种批量数据插入方法Bulk和表值参数(Table-Valued Parameters)。 运行下面的脚本建立测试数据库和表值参数。 [c-sharp] view plaincopyprint? --Create DataBase  create database BulkTestDB;  go  use BulkTestDB;  go  --Create Table  Create table BulkTestTable(  Id int primary key,  UserName nvarchar(32),  Pwd varchar(16))  go  --Create Table Valued  CREATE TYPE BulkUdt AS TABLE    (Id int,     UserName nvarchar(32),     Pwd varchar(16))   --Create DataBase create database BulkTestDB; go use BulkTestDB; go --Create Table Create table BulkTestTable( Id int primary key, UserName nvarchar(32), Pwd varchar(16)) go --Create Table Valued CREATE TYPE BulkUdt AS TABLE (Id int, UserName nvarchar(32), Pwd varchar(16))     下面我们使用最简单的Insert语句来插入100万条数据代码如下 [c-sharp] view plaincopyprint? Stopwatch sw  new Stopwatch();    SqlConnection sqlConn  new SqlConnection(      ConfigurationManager.ConnectionStrings[ConnStr].ConnectionString);//连接数据库     SqlCommand sqlComm  new SqlCommand();  sqlComm.CommandText  string.Format(insert into BulkTestTable(Id,UserName,Pwd)values(p0,p1,p2));//参数化SQL   sqlComm.Parameters.Add(p0, SqlDbType.Int);  sqlComm.Parameters.Add(p1, SqlDbType.NVarChar);  sqlComm.Parameters.Add(p2, SqlDbType.VarChar);  sqlComm.CommandType  CommandType.Text;  sqlComm.Connection  sqlConn;  sqlConn.Open();  try  {      //循环插入100万条数据每次插入10万条插入10次。       for (int multiply  0; multiply  10; multiply)      {          for (int count  multiply * 100000; count  (multiply  1) * 100000; count)          {                sqlComm.Parameters[p0].Value  count;              sqlComm.Parameters[p1].Value  string.Format(User-{0}, count * multiply);              sqlComm.Parameters[p2].Value  string.Format(Pwd-{0}, count * multiply);              sw.Start();              sqlComm.ExecuteNonQuery();              sw.Stop();          }          //每插入10万条数据后显示此次插入所用时间           Console.WriteLine(string.Format(Elapsed Time is {0} Milliseconds, sw.ElapsedMilliseconds));      }  }  catch (Exception ex)  {      throw ex;  }  finally  {      sqlConn.Close();  }    Console.ReadLine();   Stopwatch sw new Stopwatch(); SqlConnection sqlConn new SqlConnection( ConfigurationManager.ConnectionStrings[ConnStr].ConnectionString);//连接数据库 SqlCommand sqlComm new SqlCommand(); sqlComm.CommandText string.Format(insert into BulkTestTable(Id,UserName,Pwd)values(p0,p1,p2));//参数化SQL sqlComm.Parameters.Add(p0, SqlDbType.Int); sqlComm.Parameters.Add(p1, SqlDbType.NVarChar); sqlComm.Parameters.Add(p2, SqlDbType.VarChar); sqlComm.CommandType CommandType.Text; sqlComm.Connection sqlConn; sqlConn.Open(); try { //循环插入100万条数据每次插入10万条插入10次。 for (int multiply 0; multiply 10; multiply) { for (int count multiply * 100000; count (multiply 1) * 100000; count) { sqlComm.Parameters[p0].Value count; sqlComm.Parameters[p1].Value string.Format(User-{0}, count * multiply); sqlComm.Parameters[p2].Value string.Format(Pwd-{0}, count * multiply); sw.Start(); sqlComm.ExecuteNonQuery(); sw.Stop(); } //每插入10万条数据后显示此次插入所用时间 Console.WriteLine(string.Format(Elapsed Time is {0} Milliseconds, sw.ElapsedMilliseconds)); } } catch (Exception ex) { throw ex; } finally { sqlConn.Close(); } Console.ReadLine();   耗时图如下 由于运行过慢才插入10万条就耗时72390 milliseconds所以我就手动强行停止了。   下面看一下使用Bulk插入的情况 bulk方法主要思想是通过在客户端把数据都缓存在Table中然后利用SqlBulkCopy一次性把Table中的数据插入到数据库 代码如下 [c-sharp] view plaincopyprint? public static void BulkToDB(DataTable dt)  {      SqlConnection sqlConn  new SqlConnection(          ConfigurationManager.ConnectionStrings[ConnStr].ConnectionString);      SqlBulkCopy bulkCopy  new SqlBulkCopy(sqlConn);      bulkCopy.DestinationTableName  BulkTestTable;      bulkCopy.BatchSize  dt.Rows.Count;        try      {          sqlConn.Open();      if (dt ! null  dt.Rows.Count ! 0)          bulkCopy.WriteToServer(dt);      }      catch (Exception ex)      {          throw ex;      }      finally      {          sqlConn.Close();          if (bulkCopy ! null)              bulkCopy.Close();      }  }    public static DataTable GetTableSchema()  {      DataTable dt  new DataTable();      dt.Columns.AddRange(new DataColumn[]{          new DataColumn(Id,typeof(int)),          new DataColumn(UserName,typeof(string)),      new DataColumn(Pwd,typeof(string))});        return dt;  }    static void Main(string[] args)  {      Stopwatch sw  new Stopwatch();      for (int multiply  0; multiply  10; multiply)      {          DataTable dt  Bulk.GetTableSchema();          for (int count  multiply * 100000; count  (multiply  1) * 100000; count)          {              DataRow r  dt.NewRow();              r[0]  count;              r[1]  string.Format(User-{0}, count * multiply);              r[2]  string.Format(Pwd-{0}, count * multiply);              dt.Rows.Add(r);          }          sw.Start();          Bulk.BulkToDB(dt);          sw.Stop();          Console.WriteLine(string.Format(Elapsed Time is {0} Milliseconds, sw.ElapsedMilliseconds));      }        Console.ReadLine();  }   public static void BulkToDB(DataTable dt) { SqlConnection sqlConn new SqlConnection( ConfigurationManager.ConnectionStrings[ConnStr].ConnectionString); SqlBulkCopy bulkCopy new SqlBulkCopy(sqlConn); bulkCopy.DestinationTableName BulkTestTable; bulkCopy.BatchSize dt.Rows.Count; try { sqlConn.Open(); if (dt ! null dt.Rows.Count ! 0) bulkCopy.WriteToServer(dt); } catch (Exception ex) { throw ex; } finally { sqlConn.Close(); if (bulkCopy ! null) bulkCopy.Close(); } } public static DataTable GetTableSchema() { DataTable dt new DataTable(); dt.Columns.AddRange(new DataColumn[]{ new DataColumn(Id,typeof(int)), new DataColumn(UserName,typeof(string)), new DataColumn(Pwd,typeof(string))}); return dt; } static void Main(string[] args) { Stopwatch sw new Stopwatch(); for (int multiply 0; multiply 10; multiply) { DataTable dt Bulk.GetTableSchema(); for (int count multiply * 100000; count (multiply 1) * 100000; count) { DataRow r dt.NewRow(); r[0] count; r[1] string.Format(User-{0}, count * multiply); r[2] string.Format(Pwd-{0}, count * multiply); dt.Rows.Add(r); } sw.Start(); Bulk.BulkToDB(dt); sw.Stop(); Console.WriteLine(string.Format(Elapsed Time is {0} Milliseconds, sw.ElapsedMilliseconds)); } Console.ReadLine(); }   耗时图如下 可见使用Bulk后效率和性能明显上升。使用Insert插入10万数据耗时72390而现在使用Bulk插入100万数据才耗时17583。   最后再看看使用表值参数的效率会另你大为惊讶的。   表值参数是SQL Server 2008新特性简称TVPs。对于表值参数不熟悉的朋友可以参考最新的book online我也会另外写一篇关于表值参数的博客不过此次不对表值参数的概念做过多的介绍。言归正传看代码 [c-sharp] view plaincopyprint? public static void TableValuedToDB(DataTable dt)  {      SqlConnection sqlConn  new SqlConnection(        ConfigurationManager.ConnectionStrings[ConnStr].ConnectionString);      const string TSqlStatement        insert into BulkTestTable (Id,UserName,Pwd)         SELECT nc.Id, nc.UserName,nc.Pwd         FROM NewBulkTestTvp AS nc;      SqlCommand cmd  new SqlCommand(TSqlStatement, sqlConn);      SqlParameter catParam  cmd.Parameters.AddWithValue(NewBulkTestTvp, dt);      catParam.SqlDbType  SqlDbType.Structured;      //表值参数的名字叫BulkUdt在上面的建立测试环境的SQL中有。       catParam.TypeName  dbo.BulkUdt;      try      {        sqlConn.Open();        if (dt ! null  dt.Rows.Count ! 0)        {            cmd.ExecuteNonQuery();        }      }      catch (Exception ex)      {        throw ex;      }      finally      {        sqlConn.Close();      }  }    public static DataTable GetTableSchema()  {      DataTable dt  new DataTable();      dt.Columns.AddRange(new DataColumn[]{        new DataColumn(Id,typeof(int)),        new DataColumn(UserName,typeof(string)),        new DataColumn(Pwd,typeof(string))});        return dt;  }    static void Main(string[] args)  {      Stopwatch sw  new Stopwatch();      for (int multiply  0; multiply  10; multiply)      {          DataTable dt  TableValued.GetTableSchema();          for (int count  multiply * 100000; count  (multiply  1) * 100000; count)          {                      DataRow r  dt.NewRow();              r[0]  count;              r[1]  string.Format(User-{0}, count * multiply);              r[2]  string.Format(Pwd-{0}, count * multiply);              dt.Rows.Add(r);          }          sw.Start();          TableValued.TableValuedToDB(dt);          sw.Stop();          Console.WriteLine(string.Format(Elapsed Time is {0} Milliseconds, sw.ElapsedMilliseconds));      }        Console.ReadLine();  }   public static void TableValuedToDB(DataTable dt) { SqlConnection sqlConn new SqlConnection( ConfigurationManager.ConnectionStrings[ConnStr].ConnectionString); const string TSqlStatement insert into BulkTestTable (Id,UserName,Pwd) SELECT nc.Id, nc.UserName,nc.Pwd FROM NewBulkTestTvp AS nc; SqlCommand cmd new SqlCommand(TSqlStatement, sqlConn); SqlParameter catParam cmd.Parameters.AddWithValue(NewBulkTestTvp, dt); catParam.SqlDbType SqlDbType.Structured; //表值参数的名字叫BulkUdt在上面的建立测试环境的SQL中有。 catParam.TypeName dbo.BulkUdt; try { sqlConn.Open(); if (dt ! null dt.Rows.Count ! 0) { cmd.ExecuteNonQuery(); } } catch (Exception ex) { throw ex; } finally { sqlConn.Close(); } } public static DataTable GetTableSchema() { DataTable dt new DataTable(); dt.Columns.AddRange(new DataColumn[]{ new DataColumn(Id,typeof(int)), new DataColumn(UserName,typeof(string)), new DataColumn(Pwd,typeof(string))}); return dt; } static void Main(string[] args) { Stopwatch sw new Stopwatch(); for (int multiply 0; multiply 10; multiply) { DataTable dt TableValued.GetTableSchema(); for (int count multiply * 100000; count (multiply 1) * 100000; count) { DataRow r dt.NewRow(); r[0] count; r[1] string.Format(User-{0}, count * multiply); r[2] string.Format(Pwd-{0}, count * multiply); dt.Rows.Add(r); } sw.Start(); TableValued.TableValuedToDB(dt); sw.Stop(); Console.WriteLine(string.Format(Elapsed Time is {0} Milliseconds, sw.ElapsedMilliseconds)); } Console.ReadLine(); }   耗时图如下 比Bulk还快5秒。转载于:https://www.cnblogs.com/Nina-piaoye/archive/2013/03/13/2956949.html
http://wiki.neutronadmin.com/news/142008/

相关文章:

  • 建筑模版东莞网站建设技术支持购物网站建设开发费用分析
  • 去哪网站备案吗泗阳网站定制
  • 湖州网站网站建设温州做网站哪个好
  • 网站开发与网页设计品牌策划运营公司
  • wordpress子站点用户无角色wordpress 主机安装教程
  • 做五金找订单查什么网站安徽亳州建设厅网站
  • 焦作焦煤电子商务网站建设做维修那个网站发布信息好
  • wordpress官方免费主题云优化seo
  • 东莞网站推广教程建设项目环境影响登记网站湖北
  • cnzz网站建设教学世界500强互联网公司排名
  • 企业网站做电脑营销没有做防注入的网站
  • 最好的wordpress 网站网络规划设计师正高级任职资格
  • 河北做网站公司网站h5什么意思
  • 医疗网站建设渠道网站建设经费管理
  • 甘肃金顶建设公司网站成都机械设计公司
  • 移动网站开发试验报告免费发布信息网网站
  • 网站服务器提供什么服务wordpress 登录页美化
  • 优秀网站建设方案建设档案员证书查询网站
  • 公司网站建设宣传wordpress 经典博客主题
  • 思睿鸿途北京网站建设织梦如何做中英文网站
  • 北京外贸网站制作公司网站过期后
  • 思茅网站建设有没有专门做家乡图片的网站
  • 申请一个网站得多钱联想企业网站建设的思路
  • 买源码做网站简单嘛wordpress页面缓存
  • 营业执照年报官网入口萌新seo
  • 网站内容好网站开发猪八戒
  • 做网站如何选择颜色阿里巴巴网站备案
  • 千鸟云网站建设怎么做一淘宝客网站吗
  • 泗县住房和城乡建设局网站上海网站建设shwzzz
  • joomla 网站图标网站配色模板