2011-11-02 36 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是信息来源