以下内容大部分来自:

http://blog.csdn.net/tjvictor/article/details/4360030

部分内容出自互联网,实验结果为亲测。

      最近自己开发一个向数据库中插入大量历史数据的函数库,需要解决一个大数据量插入的效率问题。不用分析,我知道如果采取逐条数据插入的方式,那么效率肯定很低,光是那么多循环就知道很慢了。于是乎,我找到了上篇博客,知道了BulkCopy和TVPs方式。为了更好的了解其效率,我自己动手亲测了一下效果,测试的数据库位于本机。

(1)方式1:循环插入

        public static void NormalInerst(String connString)
        {
            Console.WriteLine("使用NNormalInerst方式:");
            Stopwatch sw = new Stopwatch();
            SqlConnection sqlConn = new SqlConnection(connString);
            SqlCommand sqlCmd = new SqlCommand();
            sqlCmd.CommandText = String.Format("insert into BulkTestTable(Id,UserName,Pwd)values(@p0,@p1,@p2)");
            sqlCmd.Parameters.Add("@p0", SqlDbType.Int);
            sqlCmd.Parameters.Add("@p1", SqlDbType.NVarChar);
            sqlCmd.Parameters.Add("@p2", SqlDbType.VarChar);
            sqlCmd.CommandType = CommandType.Text;
            sqlCmd.Connection = sqlConn;
            sqlConn.Open();
            try
            {
                for (int i = 0, j = 0; i < 10; ++i )
                {
                    for (j = i * 10000; j < (i + 1) * 10000; ++j )
                    {
                        sqlCmd.Parameters["@p0"].Value = j;
                        sqlCmd.Parameters["@p1"].Value = String.Format("User-{0}", i * j);
                        sqlCmd.Parameters["@p2"].Value = String.Format("Pwd-{0}", i * j);
                        sw.Start();
                        sqlCmd.ExecuteNonQuery();
                        sw.Stop();
                    }
                    
                    Console.WriteLine("第{0}次插入{1}条数据耗时:{2}", (i + 1), dataScale, sw.ElapsedMilliseconds);
                    sw.Reset();
                }
            }
            catch (System.Exception ex)
            {
                throw ex;
            }
            finally
            {
                sqlConn.Close();
            }
        }
View Code

相关文章:

  • 2022-12-23
  • 2021-07-03
  • 2022-01-01
  • 2022-12-23
  • 2021-06-17
  • 2021-09-07
猜你喜欢
  • 2022-12-23
  • 2022-01-30
  • 2022-12-23
  • 2022-12-23
  • 2022-02-17
  • 2022-02-21
  • 2021-12-27
相关资源
相似解决方案