我使用的是MySQL,我有一个转储文件,其内容如下
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;3.
OPTIMIZE TABLE cars发布于 2011-11-02 16:06:40
DISABLE KEYS告诉mySQL在插入时不要更新索引。ENABLE KEYS告诉它重新创建,然后再开始更新索引。最后,优化做了许多事情,包括更新统计信息和排序索引页。在大型插入/更新/删除之后,这一点非常重要。
上面的代码通常用于批量插入/更新。禁用索引有助于执行大型insert/update/delete操作。
发布于 2011-11-02 16:06:53
ALTER TABLE ... DISABLE KEYS告诉MySQL停止更新非唯一索引。
然后,应该使用ALTER TABLE ... ENABLE KEYS来重新创建缺少的索引。
如果您删除了表的很大一部分,或者对具有可变长度行的表(具有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
发布于 2011-11-02 16:14:10
可以为MyISAM表显式激活此功能。换桌子..。禁用键告诉MySQL停止更新非唯一索引。换桌子..。然后,应该使用启用键来重新创建缺少的索引。MySQL使用一种比逐个插入键快得多的特殊算法来实现这一点,因此在执行大容量插入操作之前禁用键应该会带来相当大的加速。使用。禁用键除了前面提到的权限之外,还需要索引特权。
这里是源
https://stackoverflow.com/questions/7983481
复制相似问题