更新新插入数据的索引

时间:2014-12-21 19:48:35

标签: mysql sql indexing

我有一个包含1,5M记录的InnoDB表。在此表中的3列上应用了索引,以便更快地搜索此表。

我即将向此表添加一批新的400k数据。问题是 - 如何优化此表?我应该删除当前索引并运行再次创建索引的命令(因此整个表将被索引)或者是否有一个命令可以扩展索引的效果"还有新数据吗?

谢谢你们的时间,我在这方面的经验不多。

1 个答案:

答案 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

这将重新组织表和索引。请注意,在重组操作期间,该表将无法读取一段时间。