关于MySQL 5.6使用就地alter table添加/删除相同索引的说明
从文档中: 包含DROP INDEX和ADD INDEX的ALTER TABLE语句 为同一索引命名的子句使用表副本,而不是Fast 索引创建关于MySQL 5.6使用就地alter table添加/删除相同索引的说明,mysql,performance,Mysql,Performance,从文档中: 包含DROP INDEX和ADD INDEX的ALTER TABLE语句 为同一索引命名的子句使用表副本,而不是Fast 索引创建 这对我来说有点不清楚。它是在谈论索引的名称吗?有人能举一个MySQL求助于表副本的查询的例子吗?事实上,这一行听起来好像是关于: 一个单独的ALTERTABLE语句 包含DROP INDEX和ADD INDEX子句的 这两个子句命名相同的索引 并声明这样的语句使用表副本,而不是快速创建索引 这种声明将是: ALTER TABLE MyTable DR
这对我来说有点不清楚。它是在谈论索引的名称吗?有人能举一个MySQL求助于表副本的查询的例子吗?事实上,这一行听起来好像是关于: 一个单独的ALTERTABLE语句 包含DROP INDEX和ADD INDEX子句的 这两个子句命名相同的索引 并声明这样的语句使用表副本,而不是快速创建索引 这种声明将是:
ALTER TABLE MyTable
DROP INDEX MyIndex
ADD INDEX MyIndex(MyColumn);
文档并不清楚这背后的原因,但我认为数据库希望先创建一个索引,然后删除另一个索引,这样语句本身就可以更容易地实现原子化。创建索引可能会失败。如果索引名本身也在存储中使用,那么先创建然后删除的顺序会产生冲突
毕竟,快速创建索引是一项相对较新的功能,因此随着时间的推移,他们可能会对此有所改进。啊,谢谢。我甚至不知道你一开始就可以把它们结合起来。那么是关于索引的名称?如果我有一个索引myindex,它为列my_id编制了索引,那么下面的查询会使用表副本吗?alter table mytable drop index myindex add index anotherindexmy_id,ANOTHER COLUMN;?