2011-12-17 55 views
0

我很好奇需要多長時間才能將索引放在db中的列上,該列不是空的,並且大約有100,000行。我明白,這取決於,但它需要0.1秒,1秒或10分鐘嗎?在索引db中的列時,我應該停止用戶的任何操作嗎?MySQL:爲Innodb中大約100,000行的列設置索引所需的時間?

我問的原因是我不知道哪些列應該被索引(爲了得到答案,我應該在實踐中測量它,當表增長時),因爲表幾乎是空的,項目沒有上傳。

謝謝。

回答

1

1)創建一個sqldump,將數據加載到另一個測試數據庫中並試用。

2)是的,您應該在任何類型的數據庫維護期間阻止用戶操作。即使更新速度很快,也可能出現問題,您應該給自己留有意外的空間。這也是一個很好的做法。

3)要弄清楚什麼是指數需要不需要太多的數據,最好的辦法:

一)從設計角度找出了最常用的電話和數據密集型查詢。建立他們所查詢的內容,索引要求應該是合乎邏輯的下一步。

b)學習如何閱讀query plans並尋找table scans,這是你想避免的。

1

如果您不確定要索引哪些字段,那麼我的第一個建議是讀取MySQL web site上的索引。

其次,我建議你把你的數據轉儲,插入到TEST環境,它與您的生活環境完全隔離,並且機器上執行你的測試。

你甚至可以考慮爲你的MySQL實例創建一個slave實例。您停止從機實例,對其進行索引,然後等待它再次與主機同步。然後,您可以切換主從實例,以便您的實時環境不受影響。最後,您可以索引前主實例。但要做到這一點,你必須知道主從複製以及如何將主機轉換爲從機,反之亦然。

相關問題