在MySQL中删除表是否也会丢弃索引?

时间:2009-05-20 12:22:29

标签: mysql database indexing sql-drop

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

3 个答案:

答案 0 :(得分:42)

是的,确实如此。

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

答案 1 :(得分:2)

是的,它会丢掉索引。如果基础表不存在,则没有理由保留索引。我怀疑向下迁移只是与一对一的向上迁移相反。

答案 2 :(得分:1)

没必要。但是,当表是外键关系的一部分时,可能会阻止您的DROP TABLE,而删除表会破坏依赖关系。