0

効率を上げるためだけに、ここでPHPの専門家からアドバイスを聞きたいと思います。(実際、この質問は、データベース接続を定期的に混乱させるすべての開発者に当てはまります)

1つのpersonIdがあり、このIDに複数の番号があるとします。pIDnums列のテーブルがあります

php側から、これらの数値を配列で取得します。今、私の質問が出てきます。あなたは次のようなことをしますか?

for($i=0;$i<count($arr);$i++)
{
   //Call the insert query over and over again
}

または、明らかにより良い解決策がありますか?

4

2 に答える 2

2

基本的に、一括挿入を実行する必要があります。個別の挿入を多数実行するよりも、1つの複合ステートメントを実行する方が高速です。次のことを試してください。

$data is your array
$sql = array(); 
foreach( $data as $row ) {
    $sql[] = '("'.mysql_real_escape_string($row['field1']).'")';
}
mysql_query('INSERT INTO table (field) VALUES '.implode(',', $sql));
于 2012-05-19T00:09:33.553 に答える
1

データセットが非常に大きい場合は、値をファイルにダンプしてから、「LOAD DATAINFILE」を実行することを検討できます(MySQLがスクリプトと同じホストで実行されている場合にのみ機能します)。

または、1つの挿入クエリを使用できます。

INSERT INTO table(pid,nums) VALUES (1,2), (1,3), (1,4), ... -- etc

複数の値を使用します。

于 2012-05-19T00:09:03.677 に答える