我正在使用 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
答案 0 :(得分:4)
DISABLE KEYS
告诉mySQL在插入时不要更新索引。 ENABLE KEYS
告诉它重新创建然后再次开始更新索引。最后,OPTIMIZE执行了许多操作,包括更新统计信息和排序索引页。这在大型插入/更新/删除后很重要。
上面的代码通常用于批量插入/更新。禁用索引有助于执行大型插入/更新/删除操作。
答案 1 :(得分:1)
ALTER TABLE ... DISABLE KEYS
告诉MySQL停止更新非唯一索引。
ALTER TABLE ... ENABLE KEYS
应该用于重新创建缺失的索引。
OPTIMIZE TABLE
你是否懒得搜索谷歌?
答案 2 :(得分:0)
可以为MyISAM表显式激活此功能。 ALTER TABLE ... DISABLE KEYS告诉MySQL停止更新非唯一索引。然后应该使用ALTER TABLE ... ENABLE KEYS来重新创建缺失的索引。 MySQL使用一种比逐个插入密钥快得多的特殊算法来实现这一点,因此在执行批量插入操作之前禁用密钥应该会带来相当大的加速。使用ALTER TABLE ... DISABLE KEYS除了前面提到的权限外还需要INDEX权限。
here是来源