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

Und*_*007 3 mysql sql

我有一个名为 Entries 的表:

它有:EntryID、EntryTime、Type、Values

EntryID、EntryTime是主键。

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

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

我需要重新创建EntryTime 索引吗?

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

Sau*_*abh 5

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

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

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

来源:这里