2016-03-08 49 views
0

我擁有超過1600萬行的MySQL表,並且沒有主鍵。每當我嘗試添加一個,我的連接崩潰。我曾嘗試在PHPMyAdmin和命令行中添加一個自動增量,但連接總是在大約10分鐘後丟失。使用PHP/MySQL循環更新當前行

我想要做的是循環遍歷PHP中的表格行,這樣我可以限制結果的數量,每個返回的行添加一個自動遞增的ID號。由於減少MySQL查詢的負載可以減少受影響的行數,所以我不會失去連接。

我要像做

SELECT * FROM MYTABLE LIMIT 1000001, 2000000; 

然後,在循環中,更新當前行

UPDATE (current row) SET ID='$i++' 

我該怎麼辦呢?

我也對MySQL解決方案開放。我只需要一個不會導致我失去MySQL連接的進程

注意:原始數據作爲txt文件提供給我。我不知道是否有重複,但我不能消除任何行。另外,不會添加行。此表將僅用於查詢目的。但是,當我添加索引時,沒有問題。

回答

0

這是比較容易

ALTER TABLE table_name MODIFY COLUMN id INT NOT NULL AUTO_INCREMENT PRIMARY KEY

如果你想刪除的修改後的主鍵

ALTER TABLE table_name MODIFY COLUMN id INT

+0

我試過,但 – tcam27

0

我會避免手動設置主鍵。讓MySQL做到這一點更安全。您可以臨時增加超時在配置文件中:

wait_timeout = 28800 
interactive_timeout = 28800 
+0

我沒有訪問根據您的設置配置文件 – tcam27

+0

我的連接會約10分鐘後消失,您可以使用SQL命令更改配置設置。請參閱MySQL網站獲取文檔。 – LambethWalk