我有一个包含1,5M记录的InnoDB表。在此表中的3列上应用了索引,以便更快地搜索此表。
我即将向此表添加一批新的400k数据。问题是 - 如何优化此表?我应该删除当前索引并运行再次创建索引的命令(因此整个表将被索引)或者是否有一个命令可以扩展索引的效果"还有新数据吗?
谢谢你们的时间,我在这方面的经验不多。
答案 0 :(得分: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
这将重新组织表和索引。请注意,在重组操作期间,该表将无法读取一段时间。