我有一个名为Entries的表:
它有: EntryID,EntryTime,类型,值
EntryID,EntryTime 是主键。
我有一个综合索引(EntryID,EntryTime)
问题是,几个月前我创建表时, EntryTime 类型为 VARCHAR 。现在我最近将其更改为 DateTime 。
我是否需要重新创建 EntryTime索引?
注意:如果之前是 VARCHAR ,因为我接受了一些损坏的时间值,如果它是 DATETIME 格式,通常是不可能的。但是现在我清理它并将其更改为DATETIME。该表现在有一百万条记录。
答案 0 :(得分:4)
不,如果您运行alter
查询来更改数据类型,它会再次自动创建索引,因此您无需再次执行此操作。
更改列的数据类型会导致表重组,这将产生重建表的所有索引的副作用(不仅是引用您更改的列的那些索引,而且还包括该表中的所有索引)。
您还可以通过查询show indexes from tablename;
来源:here。