首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Newbie:一些SQL语句的含义

Newbie:一些SQL语句的含义
EN

Stack Overflow用户
提问于 2011-11-02 16:03:11
回答 3查看 95关注 0票数 2

我使用的是MySQL,我有一个转储文件,其内容如下

代码语言:javascript
复制
TRUNCATE TABLE cars;

ALTER TABLE cars DISABLE KEYS;

INSERT INTO cars ...    ;

ALTER TABLE cars ENABLE KEYS;

OPTIMIZE TABLE cars

我想知道以下(来自上述转储的)声明分别在做什么:

1.

代码语言:javascript
复制
ALTER TABLE cars DISABLE KEYS;

2.

代码语言:javascript
复制
ALTER TABLE cars ENABLE KEYS;

3.

代码语言:javascript
复制
OPTIMIZE TABLE cars
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-02 16:06:40

DISABLE KEYS告诉mySQL在插入时不要更新索引。ENABLE KEYS告诉它重新创建,然后再开始更新索引。最后,优化做了许多事情,包括更新统计信息和排序索引页。在大型插入/更新/删除之后,这一点非常重要。

上面的代码通常用于批量插入/更新。禁用索引有助于执行大型insert/update/delete操作。

票数 4
EN

Stack Overflow用户

发布于 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

票数 1
EN

Stack Overflow用户

发布于 2011-11-02 16:14:10

可以为MyISAM表显式激活此功能。换桌子..。禁用键告诉MySQL停止更新非唯一索引。换桌子..。然后,应该使用启用键来重新创建缺少的索引。MySQL使用一种比逐个插入键快得多的特殊算法来实现这一点,因此在执行大容量插入操作之前禁用键应该会带来相当大的加速。使用。禁用键除了前面提到的权限之外,还需要索引特权。

这里是源

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7983481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档