这是我试图执行的查询:
DROP INDEX id_index on table;
我过去能够快速删除索引,但是在我放弃它之前,这个查询运行了将近一个小时。什么可能导致这种缓慢的步伐?
答案 0 :(得分:3)
SHOW CREATE TABLE - 如果它显示ENGINE = MyISAM,则DROP以这种方式执行:
这可能非常慢,具体取决于桌子的大小。这是因为所有的磁盘I / O.
如果它说ENGINE = InnoDB,事情可能会更好。但是,你是否正在关注PRIMARY KEY仍然很重要。并且可能KEY是否涉及FOREIGN KEY约束。我假设old_alter_table设置为OFF。
http://dev.mysql.com/doc/refman/5.6/en/alter-table.html 有很多细节。您需要说的是ALGORITHM = INPLACE。您可能有ALGORITHM = DEFAULT,我在文档中没有看到默认值是什么。
ALGORITHM = COPY就像我上面提到的MyISAM一样。
ALGORITHM = INPLACE应该花很少的时间,无论表/索引大小如何。
(请务必查看ALTER
的详细信息,了解您运行的版本。最近的主要版本有一些重大更改。)