2013-05-05 73 views
0

有一個數百萬行的表格。 我承諾以下查詢:如何優化將innodb作爲引擎添加到大表的關鍵字?

ALTER TABLE my_data ADD KEY `sex_birth` (`sex`, `birth`); 

這需要38分44.53秒!

如何優化此運行速度?

+0

這可能需要一段時間,但這種操作是相當罕見的,所以你只需要對付它。例如Twitter的人說,在他們的db中添加一個新的列需要2周的時間才能完成。 – 2013-05-05 09:00:19

回答

0

您無法真正使此查詢更快。但是你可以肯定地做一些事情,這樣你的應用程序就不會停止太久。

創建該表與其他一些名稱的副本,說my_data_alter。在此表上運行alter。

你需要的所有更新的日誌/插入/刪除已運行的,自從你把拷貝到時間結束時,ALTER。然後你將不得不運行這些查詢到my_data_alter

這將是一種永無止境的循環,如果交易與臺發生的數量太大。

最後,您只需在單個查詢中重命名這兩個表。

我知道這會非常棘手。在非高峯時間做這種事情。

我建議你寫一些腳本,做這份工作對你..