更改其中一列的类型后,是否需要重新创建索引?

时间:2014-04-29 14:10:06

标签: mysql sql

我有一个名为Entries的表:

它有: EntryID,EntryTime,类型,值

EntryID,EntryTime 是主键。

我有一个综合索引(EntryID,EntryTime)

问题是,几个月前我创建表时, EntryTime 类型为 VARCHAR 。现在我最近将其更改为 DateTime

我是否需要重新创建 EntryTime索引

注意:如果之前是 VARCHAR ,因为我接受了一些损坏的时间值,如果它是 DATETIME 格式,通常是不可能的。但是现在我清理它并将其更改为DATETIME。该表现在有一百万条记录。

1 个答案:

答案 0 :(得分:4)

不,如果您运行alter查询来更改数据类型,它会再次自动创建索引,因此您无需再次执行此操作。

  

更改列的数据类型会导致表重组,这将产生重建表的所有索引的副作用(不仅是引用您更改的列的那些索引,而且还包括该表中的所有索引)。

您还可以通过查询show indexes from tablename;

检查索引

来源:here