在MySQL中为100K行表构建单列索引需要多长时间?

时间:2014-10-08 16:06:50

标签: mysql ddl

我一直在尝试在包含100K行的varchar(20)列上创建索引,到目前为止它已经运行了30分钟。在具有16GB内存和SSD驱动器的8核i7处理器上,我只是不明白它花了这么长时间。

有什么想法吗?我对MySQL有点新鲜,但这只是一个相对较小的表上的基本vanilla索引。同一个表上的另一个索引只需几秒钟即可生成。

如何在MySQL中调试此类事情?

2 个答案:

答案 0 :(得分:0)

桌子内存的总大小是多少?如果它足够大,你得到了很多硬盘驱动器,它可能还需要一段时间。另外,在你这样做的时候,你的网站是否有效?

就调试而言,您可以检查系统上的SQL进程以查看它正在使用的资源数量。

最后,你看过创建一个多列索引而不是两个单列索引吗?

答案 1 :(得分:0)

事实证明,MySQL的默认Ubuntu服务器LAMP安装具有极低的内存分配,即使在具有明显多余内存的计算机上也需要进行大量的磁盘交换。

请注意,我没有尝试查看哪个设置解决了这个问题,但我在100K行上运行的命令,以前运行了几个小时,现在只需要几秒钟。

[mysqld]
key_buffer_size         = 256M
max_allowed_packet      = 16M

# Added
innodb_buffer_pool_size = 2G
innodb_log_buffer_size  = 64M
innodb_log_file_size    = 64M
skip_name_resolve

query_cache_limit       = 16M
query_cache_size        = 64M