我需要使用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发送到后端的想法一直困扰着您……