我需要使用C#和php将新记录添加到我的SQL数据库中。我正在使用此代码:

string server = "http://www.naseelco.com/scorm/populatecode.php";
foreach (string code in codeList)//codelist has 200 items
 {
     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(server);
     request.Method = "POST";
     string postData = "Code=" + code + "&Active=false";
     byte[] byteArray = Encoding.UTF8.GetBytes(postData);
     request.ContentType = "application/x-www-form-urlencoded";
     request.ContentLength = byteArray.Length;
     try
     {
         Stream dataStream = request.GetRequestStream();
         dataStream.Write(byteArray, 0, byteArray.Length);
         dataStream.Close();
     }
     catch
     {

     }
}


这是populatecode.php文件的内容:

<?php
$Code = $_POST['Code'];
$Active = $_POST['Active'];
mysql_connect("localhost","myUserName","myPassword") or die ('Error updating database');
mysql_select_db("naseelc1_AC");
mysql_query("INSERT INTO codes (code,Active)VALUES ('$Code','$Active')");
echo $Code;
?>


但是此代码花费太多时间来更新SQL数据库。我的问题是:
有没有更有效的方法在SQL数据库中插入多个记录?

最佳答案

分析性能问题的第一件事是测试并验证您在哪里浪费了时间,而不是假设它是系统的一部分。

您说“花费太多时间来更新SQL数据库”,您怎么知道是INSERT拖累了您?

首先,您必须测量系统各部分的运行时间。然后优化该部分。

如果您不知道要优化哪个部分,请不要开始优化。

使用探查器或简单的时间测量代码(使用PHP中的microtime()和C#中的Stopwatch类)来计算程序中某个片段的运行时间,以查明热点。

假设您已完成所有操作,但仍然发现“单行插入需要花费太长时间”,则有几个方面需要探索。索引太多可能是要检查的第一件事。

看到您的程序,我敢打赌,Anders Abel是对的,您将浪费时间在HTTP开销上,而不是在INSERT期间

一种替代方法是将整个列表发送到PHP代码,然后使用多行INSERT仅用一条语句插入所有内容:

  INSERT INTO codes (code,Active)
  VALUES
  ('code_1', true),
  ('code_2', false),
  ('code_3', true),
  ('code_4', false),
  ('code_5', true)


但是我仍然相信,将所有代码作为一个POST发送到后端的想法一直困扰着您……

08-06 21:42