在 MySQL 中使用 ALTER TABLE 建立索引需要多长时间?

2024-01-25

这可能有点像询问字符串的长度有多长,但统计数据是:

  • 英特尔双核 4GB 内存
  • 具有 800 万行、约 20 列的表,大部分为具有 auto_increment 主 id 的 varchar
  • 查询是: ALTER TABLE my_table ADD INDEXmy_index(我的列);
  • my_column 是 varchar(200)
  • 存储是MyISAM

数量级,应该是1分钟、10分钟、100分钟吗?

Thanks

Edit:好吧,它花了 2 小时 37 分钟,而在配置基本相同的较小规格机器上则需要 0 小时 33 分钟。我不知道为什么花了这么长时间。唯一的可能是产品机 HD 已满 85%,还有 100GB 可用空间。应该足够了,但我想这取决于可用空间的分配方式。


如果您只是添加单个索引,则大约需要 10 分钟。但是,如果内存中没有该索引文件,则需要 100 分钟或更长时间。

包含 800 万行的 200 个 varchar 最多需要 1.6GB,但加上所有索引开销,大约需要 2-3GB。但如果大多数行少于 200 个字符,则所需时间会更少。 (您可能想做一个选择sum(length(my_column))查看需要多少空间。)

您想要编辑您的/etc/mysql/my.cnf文件。使用这些设置;

myisam_sort_buffer_size = 100M
sort_buffer_size = 100M

祝你好运。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 MySQL 中使用 ALTER TABLE 建立索引需要多长时间? 的相关文章

随机推荐