在MySQL中删除一个表是否也删除索引?

在文档中没有明确提到( http://dev.mysql.com/doc/refman/6.0/en/drop-table.html )。 我问,因为我刚刚在一个Rails项目中看到一个好奇的数据库迁移,开发人员在删除表之前删除了所有的索引,似乎没有必要。

是的,它确实。

但是,如果有外键约束(如RESTRICT)确保与其他表的引用完整性,则在删除或截断表之前,需要删除这些键。

是的,它会降低指数。 如果底层表不存在,没有理由保留索引。 我怀疑,这种向下移徙只是与一对一的向上移徙相反。 可能是一个CDO的情况 – 就像强迫症 ,但字母是在正确的顺序。

这是不必要的。 但是,当表是外键关系的一部分时,您的DROP TABLE可能会被阻止,并且删除表将会破坏依赖关系。