删除MySQL表是否会自动删除该表的索引?

时间:2010-05-18 00:02:32

标签: mysql indexing

删除MySQL表是否会自动删除该表的索引?

5 个答案:

答案 0 :(得分:15)

是。它删除了索引。这可以验证:

CREATE TABLE table1 (foo INT);
CREATE INDEX ix_table1_foo ON table1 (foo);
CREATE INDEX ix_table1_foo ON table1 (foo); -- fails: index already exists.
DROP TABLE table1;
CREATE TABLE table1 (foo INT);
CREATE INDEX ix_table1_foo ON table1 (foo); -- succeeds: index does not exist.

您还可以查看information schema

进行验证
CREATE TABLE table1 (foo INT);
CREATE INDEX ix_table1_foo ON table1 (foo);

SELECT COUNT(*)
FROM information_schema.STATISTICS
WHERE INDEX_NAME = 'ix_table1_foo';  -- returns 1

DROP TABLE table1;

SELECT COUNT(*)
FROM information_schema.STATISTICS
WHERE INDEX_NAME = 'ix_table1_foo';  -- returns 0

答案 1 :(得分:1)

是的,确实如此。没有表,没有理由保留索引。

您可以通过创建MyISAM表并查看tablename.MYI的数据文件夹来确认这一点。一旦你放下桌子,这个文件就会消失。

答案 2 :(得分:1)

是。索引是其所有者表的一部分,并在删除时与行数据一起释放。

(引用它的其他表上的外键索引将阻止表被删除。)

答案 3 :(得分:1)

当表被删除时,所有数据,索引和链接信息也将被删除。 您可以将此视为行的级联删除,当您删除行时,链接到它的所有信息都将被删除(外键等)

答案 4 :(得分:0)

http://dev.mysql.com/doc/refman/5.1/en/drop-table.html

  

所有表格数据和表格   定义被删除,所以要小心   这句话!