首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向表中添加或删除列是否会强制重新创建所有索引?

问向表中添加或删除列是否会强制重新创建所有索引?
EN

Stack Overflow用户
提问于 2012-01-14 00:57:36
回答 1查看 633关注 0票数 4

特别是在MySQL中(尽管我假设甲骨文和Microsoft SQL Server也是如此)。如果我向表中添加或删除一列,是否需要从头开始创建(该表上的)所有当前索引?

我可以想象,如果我们改变表行大小(通过添加/删除列),那么ROWIDS将改变(非聚集表),从而强制重新创建所有索引。

如果使用聚集索引(Oracle中的索引组织表),那么我想整个聚集索引也必须重新创建。

如果需要重新创建所有索引,是否有优化重建时间的策略?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-14 07:33:21

你没有说哪个版本的MySQL和哪个存储引擎。但我怀疑你的问题的答案就在这个页面上:

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

对您的问题的简短回答是“是”,当您添加或删除列时,将重新构建整个表(所有数据和所有索引)。要提高速度,请尝试以下操作:

MyISAM:增加myisam_sort_buffer_size的值

InnoDB:增加innodb_buffer_pool_size

增加innodb_log_file_size

任一存储引擎:对您的列使用尽可能小的列数据类型。

来源:我是一名经过认证的MySQL数据库管理员。

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

https://stackoverflow.com/questions/8854278

复制
相关文章

相似问题

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