是否可以从MySQL的复合索引中删除一列?

huangapple go评论60阅读模式
英文:

Is it possible to remove a column from a composite index on Mysql?

问题

我有一个具有三列唯一索引的表。
现在我需要从这个索引中移除一列。

在这种情况下,最好的选择是什么?

  1. 是否可以从索引中移除一列?
  2. 删除现有索引,然后使用相同的名称重新创建它?
英文:

I have a table with a unique index of three columns.
Now I need to remove one column from this index.

What is the best option in this case?

  1. Is it possible to remove a column from the index?
  2. Delete the existing index and re-create it with the same name?

答案1

得分: 1

-- 删除现有索引
ALTER TABLE my_table DROP INDEX index_name;

-- 创建一个新的索引,不包括要删除的列
ALTER TABLE my_table ADD INDEX index_name (column1, column2);

或者

-- 修改索引定义,而不重新构建整个表
ALTER TABLE my_table ALGORITHM=INPLACE, DROP INDEX index_name, ADD INDEX index_name (column1, column2);
英文:
    -- Drop the existing index
ALTER TABLE my_table DROP INDEX index_name;

    -- Create a new index without the column you want to remove
ALTER TABLE my_table ADD INDEX index_name (column1, column2);

or

    -- Modify the index definition without rebuilding the entire table
ALTER TABLE my_table ALGORITHM=INPLACE, DROP INDEX index_name, ADD INDEX index_name (column1, column2);

huangapple
  • 本文由 发表于 2023年7月3日 21:17:20
  • 转载请务必保留本文链接:https://go.coder-hub.com/76605138.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定