我有很多数据需要 INSERT LOW_PRIORITY 到表中。由于每次插入行时都会重建索引,因此需要很长时间。我知道我可以使用事务,但在这种情况下,如果只有一行失败,我不希望整个集合失败。
有什么方法可以让 MySQL 停止在特定表上重建索引,直到我告诉它可以恢复为止?
理想情况下,我想插入 1,000 行左右,设置索引执行其操作,然后插入接下来的 1,000 行。
我无法使用 INSERT DELAYED,因为我的表类型是 InnoDB。否则,INSERT DELAYED 对我来说是完美的。
这并不重要,但我正在使用 PHP/PDO 访问 MySQL。您能提供的任何建议将不胜感激。谢谢!
ALTER TABLE tableName DISABLE KEYS
// perform inserts
ALTER TABLE tableName ENABLE KEYS
这将禁用所有非唯一索引的更新。缺点是这些索引也不会用于选择查询。
但是,您可以使用多重插入(INSERT INTO table(...) VALUES(...),(...),(...),这也将批量更新索引。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)