我有一個超過一百萬行用戶信息的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()生成密碼。但此方法需要很長時間 –
作爲替代方法(如果可以的話)將密碼列添加到表中並在需要時爲用戶生成密碼。這種方式將隨着時間的推移而不是一次全部傳播。 –