gpt4 book ai didi

mysql - 删除索引查询很慢

转载 作者:行者123 更新时间:2023-11-29 01:39:41 28 4
gpt4 key购买 nike

这是我要执行的查询:

在表上删除索引 id_index;

我过去能够快速删除索引,但这个查询运行了将近一个小时后我才放弃。是什么导致了这种缓慢的步伐?

最佳答案

SHOW CREATE TABLE -- 如果显示 ENGINE=MyISAM,则 DROP 以这种方式执行:

  1. 将整个表数据复制到临时文件中(由于大量 I/O,速度较慢)
  2. 重建所有剩余的索引(在某些情况下非常慢)
  3. 重命名以替换现有表(总是很快)

这可能会很慢,具体取决于表的大小。这是因为所有的磁盘 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 的详细信息。最近的主要版本有几项重大更改。)

关于mysql - 删除索引查询很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28329134/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com