2014-12-21 93 views
1

我有一個包含1,5M記錄的InnoDB表。在此表中的3列上應用索引以更快地搜索此表。更新新插入數據的索引

我即將新增一批400k數據到此表中。問題是 - 如何優化這個表格?我是否應該刪除當前索引並重新運行用於創建索引的命令(這樣整個表將被編入索引),還是有一條可以「擴展索引效果」的命令也可以用於新數據?

謝謝你們,我在這方面經驗不多。

回答

1

當您向表中添加行時,索引將自動更新。

如果你想要最好的性能,在插入前右行的,發出這些命令:

SET unique_checks=0; 
    SET foreign_key_checks=0; 
    SET autocommit=0; 

這些命令加快速度,因爲他們砍掉MySQL有每個插入做的工作。看這裏。 http://dev.mysql.com/doc/refman/5.6/en/optimizing-innodb-bulk-data-loading.html

然後,你做你的插入,使用此命令,每100行左右:

COMMIT; 

然後,當你與你的插入完成後,發出這些命令:

SET autocommit=1; 
    SET foreign_key_checks=1; 
    SET unique_checks=1; 

最後,在您的插入工作結束時,您可能會考慮發出命令

OPTIMIZE TABLE yourTableName 

這將重新組織表和索引。請注意,在重組操作期間,表格將暫時無法閱讀。