-2

MySQL データベースに 3000 行書き込みます。

INSERT INTO test (id, test) VALUES ("1", "test");
INSERT INTO test (id, test) VALUES ("2", "test");
INSERT INTO test (id, test) VALUES ("3", "test");

...

INSERT INTO test (id, test) VALUES ("3000", "test");

データベースがハングアップしなかった部品のリクエストを共有する方法は?

4

3 に答える 3

2

INSERT次のように、複数のステートメントを 1 つのステートメントにグループ化できます。

INSERT INTO test (id, test) VALUES ("1", "test"), ("2", "test"), ("3", "test");

これにより、サーバーに送信されるクエリの量が減るはずです。

さらに、データベースがハングアップする場合は、キーワードDELAYED( MySQL docu ) を使用できます。これにより、データベースが挿入できるようになるまで挿入がキャッシュされます。より即時のクエリが挿入に先行するため、挿入が遅れる可能性があります。ここで注意すべき重要な点は、すぐにではなく、最終的にテーブルにデータを格納するだけであるということです。

INSERT DELAYED INTO test (id, test) VALUES ("1", "test"), ("2", "test"), ("3", "test");
于 2012-05-07T08:58:13.193 に答える
1

これがあなたが求めているものかどうかはわかりませんが、複数の挿入を 1 つのクエリに結合するには、次のようにします。

INSERT INTO test (id, test) VALUES
  ("1", "test"),
  ("2", "test"),
  ("3", "test");

これにより、スクリプトが大幅に高速化されます。

于 2012-05-07T08:54:23.517 に答える
1

挿入する行が 3000 行ありますが、すべてを書き出す必要はありませんか? もしそうなら、これを使用してください:

$insert = '';
$count = 1;
while ($count <= 3000) {
  $insert .= "('$count', 'test'), ";
  $count++;
}

$insert = substr($insert, 0, -2);

INSERT INTO test (`id`, `test`) VALUES $insert;
于 2012-05-07T09:00:05.073 に答える