2012-05-07 13 views
-2

MySQLデータベースに3000行書き込む。PHP INSERT in MySQL 3000 rows

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

を... – Marco

+0

は、いくつかのデシベルの制限のために、あなたの質問 –

答えて

1

挿入する行は3000行ありますが、すべて書き出す必要はありませんか?この使用している場合:私は本当にあなたの質問を理解することはできません

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

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

INSERT INTO test (`id`, `test`) VALUES $insert; 
1

私は、これはあなたが求めているものですが、1つのクエリに複数の挿入を組み合わせることがあれば、あなたが行うことができますかわからない:

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

これは劇的にあなたのスクリプトをスピードアップする必要があります。

+0

限度を越えないように注意してください詳細を指定する複数のINSERTクエリごとに1000行では、MySQLを見つけます – ray

2

複数のINSERTステートメントを1つの単一ステートメントにグループ化することができます。

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

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

また、データベースがハングアップする場合は、キーワードDELAYEDMySQL docu)を使用できます。これは、データベースが挿入できる余裕があるまで挿入をキャッシュします。より即座にクエリを実行すると、挿入が先行して遅れます。ここで重要なのは、最終的にはテーブルにデータがあり、immediatlyではないことだけです。

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