SQLデータベースに新しい行を挿入する

私はSQLデータベースにC#とPHPを使って新しいレコードを追加する必要があります。私はこのコードを使用しています:

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が正しかったと思います。あなたはINSERT中ではなく、HTTPオーバーヘッドであなたの時間を失いつつあります。

代わりに、PHPコードにリスト全体を送信し、複数行の INSERT
を使用して、単一の文ですべてを挿入することもできます。

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

しかし、私はまだそれがすべての時間を取っているバックエンドに1つのPOSTとして各コードを送信するあなたの概念だと思う…

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です