我有一个拥有超过一百万行的用户信息的mysql表。我想在该表中添加一个列'密码',随机生成密码并更新所有记录(使用PHP)。 执行此任务的最快方法是什么? 提前谢谢。
答案 0 :(得分:-1)
可能的情况
LOAD DATA INFILE
(恰好是从文件导入数据的最快方法)从密码文件加载数据。password
列UPDATE
加入来更新原始表中的临时表答案 1 :(得分:-1)
请记住,更改表格的操作可能需要很长时间,我建议将这两个步骤分开。
1)改变表格,这里我建议采用以下步骤(伪代码):
此时,您的原始表格包含新列。
2)现在,在您更改结构后,您可以使用php填充新列“密码”。如果您使用InnoDB作为存储引擎时间无关紧要,因为您没有使用更新锁定表。如果你在事务中执行此操作,我建议将更新过程分解为较小的事务,而不是插入一个大的批量。
如果您不能(最小)停机,我建议您查看pt-online-schema-change
,我们在主要数据库上使用此工具,我们无法在任何停机时间内进行架构更改正在跑步。它大致执行上述步骤(1),并且还借助于触发器确保在执行alter process时插入原始表的数据也写入更改的表。