2011-11-02 27 views
2

我使用MySQL的的一些SQL語句的含義,我有一個轉儲文件,它的內容是類似以下新手:

TRUNCATE TABLE cars; 

ALTER TABLE cars DISABLE KEYS; 

INSERT INTO cars ... ; 

ALTER TABLE cars ENABLE KEYS; 

OPTIMIZE TABLE cars 

我想知道什麼是下面的語句(從上面的轉儲)分別做:

1.

ALTER TABLE cars DISABLE KEYS; 

2.

ALTER TABLE cars ENABLE KEYS; 

OPTIMIZE TABLE cars 

回答

4

DISABLE KEYS告訴MySQL不要當你插入更新索引。 ENABLE KEYS告訴它重新創建,然後再次開始更新索引。最後OPTIMIZE做了許多事情,包括更新統計信息和排序索引頁面。大插入/更新/刪除後這很重要。

上面的代碼通常用於批量插入/更新。禁用索引有助於執行大型插入/更新/刪除操作。

1

ALTER TABLE ... DISABLE KEYS告訴MySQL停止更新非唯一索引。

ALTER TABLE ... ENABLE KEYS然後應該用來重新創建缺失索引。

OPTIMIZE TABLE如果您已經刪除了表的大部分內容,或者如果您對具有可變長度行的表(具有VARCHAR,VARBINARY,BLOB或TEXT列的表)進行了許多更改,則應該使用OPTIMIZE TABLE

你打擾搜索谷歌嗎?

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

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

0

此功能可以明確的MyISAM表被激活。 ALTER TABLE ... DISABLE KEYS告訴MySQL停止更新非唯一索引。然後使用ALTER TABLE ... ENABLE KEYS重新創建缺失的索引。 MySQL使用一種特殊的算法來實現這一點,它比逐一插入密鑰要快得多,因此在執行批量插入操作之前禁用密鑰應該會帶來相當大的加速。使用ALTER TABLE ... DISABLE KEYS除了前面提到的特權之外還需要INDEX特權。

here是信息來源