2014-12-21 96 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 

这将重新组织表和索引。请注意,在重组操作期间,表格将暂时无法阅读。