【问题标题】:Does dropping a MySQL table automatically drop that table's indices too? [duplicate]删除 MySQL 表是否也会自动删除该表的索引? [复制]
【发布时间】:2011-02-20 16:19:53
【问题描述】:

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

【问题讨论】:

  • 实际上,这并不像我在初读时所认为的那样奇怪。虽然 MySQL 的文档没有明确提到 DROP TABLE 会删除所有索引,但我认为这是隐含的。

标签: mysql indexing


【解决方案1】:

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

所有表格数据和表格 定义被删除,所以要小心 用这个声明!

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

          创建表 table1 (foo INT); 创建索引 ix_table1_foo ON table1 (foo); 创建索引 ix_table1_foo ON table1 (foo); -- 失败:索引已经存在。 删除表表 1; 创建表 table1 (foo INT); 创建索引 ix_table1_foo ON table1 (foo); -- 成功:索引不存在。

          您也可以通过查看information schema 来验证它:

          创建表 table1 (foo INT); 创建索引 ix_table1_foo ON table1 (foo); 选择计数(*) FROM information_schema.STATISTICS WHERE INDEX_NAME = 'ix_table1_foo'; -- 返回 1 删除表表 1; 选择计数(*) FROM information_schema.STATISTICS WHERE INDEX_NAME = 'ix_table1_foo'; -- 返回 0

          【讨论】:

            猜你喜欢
            • 2010-10-27
            • 1970-01-01
            • 1970-01-01
            • 2012-01-20
            • 2019-07-05
            • 1970-01-01
            • 2014-12-10
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多