0

我刚刚运行了一个查询来删除一个索引,我花了很长时间才终止了这个查询。我现在很好奇,是部分删除了索引,还是索引不受影响?

ALTER TABLE第一次和DROP INDEX第二次使用删除索引,但最终杀死了两个查询。我对 MySQL 方法的理解是它复制到临时表,在临时表上应用更改(删除索引),删除原始表并重命名临时表。这个对吗?对ALTER TABLEandDROP INDEX命令是否正确,还是仅对其中一个正确?

4

2 回答 2

1

是的,如果使用默认设置,您是正确的。

可以配置数据库,使其不会制作(使用)临时表。

您也可以查看偏离路线的结果以仔细检查

于 2013-08-08T05:40:13.257 回答
1

这将回滚所有内容。ACID 投诉数据库中不存在半完成事务。这是一个全有或全无的情况。

现在你必须记住一些事情,特别是就 InnoDB 而言,索引不是与表一起存储的。它是磁盘上的一个单独的 B-Tree 结构,带有指向表中数据的指针。因此 MySQL 永远不需要从表中删除索引。它只需要破坏索引结构。

于 2013-08-08T05:41:21.167 回答