使用PHP / MySQL循环更新当前行

时间:2016-03-08 12:21:30

标签: php mysql

我有一个超过1600万行的MySQL表,没有主键。每当我尝试添加一个,我的连接崩溃。我尝试在PHPMyAdmin和命令行中添加一个作为自动增量但是大约10分钟后连接总是丢失。

我想要做的是在PHP中遍历表的行,这样我就可以限制结果的数量,并且每个返回的行都会添加一个自动递增的ID号。由于通过减少MySQL查询的负载可以减少受影响的行数,因此我不会丢失连接。

我想做点什么

SELECT * FROM MYTABLE LIMIT 1000001, 2000000;

然后,在循环中,更新当前行

UPDATE (current row) SET ID='$i++'

我该怎么做?

我也对MySQL解决方案持开放态度。我只需要一个不会导致我丢失MySQL连接的进程

注意:原始数据是作为txt文件提供给我的。我不知道是否有重复,但我不能消除任何行。此外,不会添加任何行。此表仅用于查询目的。但是,当我添加索引时,没有问题。

2 个答案:

答案 0 :(得分:0)

更容易

ALTER TABLE table_name MODIFY COLUMN id INT NOT NULL AUTO_INCREMENT PRIMARY KEY

如果您想在修改后删除主键

ALTER TABLE table_name MODIFY COLUMN id INT

答案 1 :(得分:0)

我会避免手动设置主键。让MySQL做得更安全。您可以暂时增加配置文件中的超时:

wait_timeout = 28800
interactive_timeout = 28800