2010-05-18 47 views
14

丟棄MySQL表是否自動刪除該表的索引?是否會自動刪除該表的索引?

+0

這不是因爲特殊的問題,因爲我認爲這是一讀,其實。雖然MySQL的文檔沒有明確提到DROP TABLE會刪除所有索引,但我認爲這是隱含的。 – 2010-05-18 00:05:49

回答

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

是的,它的確如此。如果沒有表格,那麼沒有理由保留索引。

您可以通過創建MyISAM表並在數據文件夾中查找tablename.MYI來確認。一旦你放棄了這個表格,這個文件就會消失。

1

是的。索引是其所有者表的一部分,並在丟失時與行數據一起釋放。

(上引用它會阻止表中的其他表的外鍵索引被丟棄。)

1

當一個表被丟棄的所有數據,索引和鏈接的信息將被刪除以及。 您可以將此視爲一行的級聯刪除,當您刪除一行時,所有鏈接到它的信息也將被刪除(外鍵等)

相關問題