现在,向表添加主键需要2个小时的时间才能完成。

ALTER TABLE <table-name> ADD PRIMARY KEY (a,b,c,d,e);

a: VARCHAR(50) NOT NULL COLLATE 'utf8_general_ci',
b: SMALLINT UNSIGNED,
c: YEAR SMALLINT(4) NOT NULL,
d: INT UNSIGNED NOT NULL DEFAULT '0',
e: INT UNSIGNED NOT NULL,


此特定表中每列中的排列数如下:

a:12个排列
b:83个排列
c:6个排列
d:200个排列
e:200个排列

现在,我计划将列a从VARCHAR(50)更改为INT。我想知道是否还有其他技巧可以加快查询速度?谢谢。

一些更多的信息:

MySQL 5.6
50 million rows
Using InnoDB
Didn't tune any Innodb settings. All default Amazon AWS Aurora settings.
SSD

There is another index on
    d: INT UNSIGNED NOT NULL DEFAULT '0',
    e: INT UNSIGNED NOT NULL,

Two other indexes on other columns f & g, which are not included in the primary key.  Thanks.

最佳答案

在InnoDB中添加主键需要复制整个表并重建辅助索引。无法避免这种情况。

Aurora对于二级索引的写入性能较差。因此,您可以尝试在添加主键之前暂时删除二级索引。

Amazon Aurora更改了InnoDB的许多内部组件,并且它们尚未发布精确调整选择所需的信息。 Aurora使用专有的存储技术,并且没有太多信息可用于对此进行调整。因此,您可以尝试与亚马逊联系以获得一些咨询帮助。

关于mysql - 如何加快在MySQL表中添加主键的速度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46005552/

10-10 09:07