将 PRIMARY KEY 添加到大型 InnoDB 表的好方法是什么?

Wod*_*din 8 mysql innodb primary-key

我在使用 InnoDB 存储引擎的 MySQL 5.5 中有一个包含大约 3000 万行的表。这个表有一个外键,它链接到另一个大约有 300 万行的表。

我想向更大的表添加一个主键,但我不确定如何最好地做到这一点。没有我可以使用的现有列(或列集),那么我应该怎么做呢?

我看到了一些对内部 InnoDB 记录 ID 的引用,但还没有找到是否可以访问。

否则,也许我需要转储并重新加载数据,手动添加 id。

谢谢。

Pat*_*ick 7

这可能是错误的方法,但是..

你不能只是改变表结构,

向表中添加主键列

然后...

编写一个快速脚本来遍历整个表

向新列添加自动递增值?

  • 谢谢你的建议。我想我必须将该列添加为非主键,然后将其转换为主键,但实际上我只是在对小表进行测试时偶然发现,添加了一个 AUTO_INCREMENT 列(作为主键)自动填写id。假设它只会给我一个错误,所以我认为这就是答案。 (2认同)