Php 如何重新同步Mysql自动增量字段

Php 如何重新同步Mysql自动增量字段,php,mysql,optimization,query-optimization,auto-increment,Php,Mysql,Optimization,Query Optimization,Auto Increment,我有一张比15米大的桌子。 它有一个A.I(id)值和一些删除的记录,例如5、2.000.123、12.000.002。 我想用下一条记录填充空白的id值 我是这样想的: $limit = 1000; $id = 0; while($id < $total_record){ $results = $db->run("select id,mac from logs where id > $id limit $limit"); foreach($results a

我有一张比15米大的桌子。 它有一个A.I(id)值和一些删除的记录,例如5、2.000.123、12.000.002。 我想用下一条记录填充空白的id值

我是这样想的:

$limit = 1000;
$id = 0;

while($id < $total_record){
    $results = $db->run("select id,mac from logs where id > $id limit $limit");
    foreach($results as $row){
        $id++;
        $db->run("update logs set id = $id where id = $row[id];");
    }
}

$id++;
$db->run("ALTER TABLE logs AUTO_INCREMENT = $id;");
$limit=1000;
$id=0;
而($id<$total_记录){
$results=$db->run(“从id>$id limit$limit的日志中选择id、mac”);
foreach($结果为$行){
$id++;
$db->run(“更新日志集id=$id,其中id=$row[id];”;
}
}
$id++;
$db->run(“更改表日志自动增量=$id;”);
但这需要很长时间(:
有什么方法可以快速简便地完成此操作吗?

如果“日志”表存储引擎是MYISAM,请尝试将其引擎更改为InnoDB。它已经是InnoDB了,但感谢您的建议。它的可能重复似乎是一个不错的解决方案。对于重复的问题,非常抱歉。谢谢。您关心ID的顺序吗?其他表是否通过ID引用此表?