我有一个超过一百万行用户信息的MySQL表。我想在该表中添加一列“密码”,随机生成密码并更新所有记录(使用PHP)。 执行此任务的最快方法是什么? 在此先感谢。最好的方法来更新超过百万记录在mysql中
2
A
回答
-1
一个可能的方案
- 生成所有的密码到一个文件,你的PHP脚本
- 创建临时表和使用
LOAD DATA INFILE
(这恰好是从文件导入数据的最快方法),以从加载数据密码文件。 - 改变你的表并添加
password
列 - 使用
UPDATE
与加入从临时表中的原始表更新密码栏 - 删除临时表
+0
亲爱的downvoter不要害羞。让我们听听投票是什么? – peterm
-1
请记住,对于改变表操作可能需要很长时间,我会建议分开这两个步骤。
1)改变表,在这里我建议以下步骤(伪):
- 创建NEW_TABLE像OLD_TABLE
- 改变NEW_TABLE添加列密码
- INSERT INTO NEW_TABLE(列)SELECT *从OLD_TABLE
- 重命名OLD_TABLE到old_table_bck,NEW_TABLE到OLD_TABLE
- 降old_table_bck
在这一点上,你有你的原始表与新列。
2)现在,当你改变你的结构后,你可以用你的php填充新的'密码'列。如果您使用InnoDB作为存储引擎,时间并不重要,因为您没有使用更新锁定表。如果你在交易中这样做,我会建议将更新过程分解为较小的交易,而不是插入一个大的交易量。
如果您不容采取(最小的)的停机时间,我建议你看pt-online-schema-change
,我们用我们的努力不容任何停机时间,以进行架构更改,而数据库运行的主要数据库这个工具。它粗略地执行上述步骤(1),并且通过触发器的帮助另外确保在执行改变过程时插入原始表格中的数据也被写入改变的表格。
相关问题
- 1. 优化mysql表更新百万记录
- 2. 最好的方式来处理一个数百万记录更新和大量读数的MySQL表
- 3. Mysql:百万条记录,每天1000万更新表
- 4. 如何为超过一百万条记录的MySql表索引
- 5. 最快的方法来比较和更新百万行
- 6. Mysql更新查询超过1000万条记录
- 7. MYSQL:在2百万条记录上更新替换
- 8. 更新在MySQL的InnoDB万条记录
- 9. 在cassandra中读取超过百万条记录
- 10. 访问查询超过1百万条记录,无法导出
- 11. 一百万+记录
- 12. 超过50万条记录
- 13. 在SQL Server 2012中更新数百万条记录
- 14. 如何部分更新大表中的数百万条记录
- 15. 哪个是更新c中文件记录的最好方法?
- 16. 超过2百万矩形
- 17. 如何将超过一百万条记录插入MySQL数据库?
- 18. 最好的方法来防止更新
- 19. 在LINQ to SQL中超时插入数百万条记录
- 20. JDBC在Oracle数据库上更新数百万条记录
- 21. 在JqGrid中显示百万条记录
- 22. mySQL:最有效的方法来更新大型数据库中的记录?
- 23. 数百万记录的增量更新,索引与加入
- 24. 是否存在一些更好的方式来记录更新历史记录?
- 25. mysql在大表中搜索约5百万条记录
- 26. 在Pentaho中排序200-300万条记录的最佳方法?
- 27. 内存超过5000万记录c#nhibernate
- 28. 记录超过3列的最新值
- 29. 使用休眠提取数百万记录表的最佳方法
- 30. 将数百万条记录加载到Datastax solr的最佳方法是什么?
你将如何存储密码?如果你使用一个合理的散列函数,那么这肯定是最耗时的单个任务。 – JimL
我在循环中使用PHP rand()生成密码。但此方法需要很长时间 –
作为替代方法(如果可以的话)将密码列添加到表中并在需要时为用户生成密码。这种方式将随着时间的推移而不是一次全部传播。 –