我有一个超过1600万行的MySQL表,没有主键。每当我尝试添加一个时,我的连接都会崩溃。我尝试在 PHPMyAdmin 和命令行中添加一个作为自动增量,但大约 10 分钟后连接总是丢失。
我想做的是在 PHP 中循环遍历表的行,这样我就可以限制结果的数量,并在每返回的行中添加一个自动递增的 ID 号。由于通过减少 MySQL 查询的负载可以减少受影响的行数,因此我不会失去连接。
我想做类似的事情
SELECT * FROM MYTABLE LIMIT 1000001, 2000000;
然后,在循环中,更新当前行
UPDATE (current row) SET ID='$i++'
我该怎么做?
我也对MySQL解决方案持开放态度。我只需要一个不会导致我丢失MySQL连接的进程
注意:原始数据是作为txt文件提供给我的。我不知道是否有重复项,但我无法消除任何行。此外,不会添加任何行。此表将仅用于查询目的。但是,当我添加索引时,没有任何问题。
更容易
ALTER TABLE table_name MODIFY COLUMN id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
如果您想在修改后删除主键
ALTER TABLE table_name MODIFY COLUMN id INT
我会避免手动设置主键。让MySQL来做这件事要安全得多。您可以暂时增加配置文件中的超时:
wait_timeout = 28800
interactive_timeout = 28800