MySQL php INSERT INTO需要很长时间

use*_*394 2 php mysql sql

我想在表中插入0到10000000(1000万)个主键。

我的表如下:

p_key-->      (INT[10]) AUTO_INCREMENT PRIMARY KEY UNIQUE
hash_value--> (SMALLINT)
req_count--> (SMALLINT)
Run Code Online (Sandbox Code Playgroud)

仅添加100条记录需要500条记录花费11秒的时间,因此超过了30秒的超时时间。(wamp server localhost php mysql)

for ($i=0;$i<100;$i++){
    $query='INSERT INTO hash_table (hash_value, req_count) VALUES (0,0)';
    $result=$con->query($query);
    if(!$result){
        echo ("Error message:".$con->error." \n");
        exit();
    }
  }
Run Code Online (Sandbox Code Playgroud)

我在做错什么吗?

小智 5

您应该在一个SQL查询中插入多个记录。

例如:

$values='';

for ($i=0;$i<100;$i++){
    $values.='(0,0),';
}

$values=substr($values,0,-1);

$query='INSERT INTO hash_table (hash_value, req_count) VALUES '.$values;
$result=$con->query($query);
if(!$result){
    echo ("Error message:".$con->error." \n");
    exit();
}
Run Code Online (Sandbox Code Playgroud)