2

テスト目的で、MySQL テーブルにデータを挿入しています。以下のコードは、それぞれに 20 行を追加しますc。の値がc100 万を超えるまでそうします。その後、どこかで以前に追加された行の追加を開始します。どうすればこの問題を解決できますか?

for($c=1; $c<=2000000; $c++)
{
    for($i=0; $i<=19; $i++)
    { 
        $query = "INSERT INTO selections (c_id, i_id) VALUES('$c', '$i')";
        mysql_query($query) or die("Cannot add... " . mysql_error());
    }
}
4

3 に答える 3

2

タスクの目的が単にデータを入力することであり、php スクリプトを使用してデータを挿入しようとしない場合、このような単純なストアド プロシージャを使用して mysql でそれを行うことができます。

DELIMITER $$
CREATE PROCEDURE insert_selections(IN max_value INT)
BEGIN
DECLARE i INT DEFAULT 1;
WHILE i <= max_value DO
    INSERT INTO selections VALUES
     (i, 1), (i, 2), (i, 3), (i, 4), (i, 5), (i, 6), (i, 7), (i, 8), (i, 9), (i, 10), 
     (i, 11), (i, 12), (i, 13), (i, 14), (i, 15), (i, 16), (i, 17), (i, 18), (i, 19), (i, 20);
    SET i =  i + 1;
END WHILE;
END$$
DELIMITER ;

そしてそれを実行する

CALL insert_selections(2000000);

私のMacでは数分かかりました

于 2013-04-14T12:35:01.813 に答える
0

共有されたコードは、ローカルで正常に動作するようですunique index。2 つの列に結合を追加しました

CREATE TABLE `selections` (
    `c_id` INT(10) NULL DEFAULT NULL,
    `i_id` INT(10) NULL DEFAULT NULL,
    UNIQUE INDEX `c_id_i_id` (`c_id`, `i_id`)
)

2 instances同じページがありexecuting、値が重複していると思います

于 2013-04-14T12:46:30.313 に答える