现在向表中添加主键需要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.
答案 0 :(得分:1)
在InnoDB中添加主键需要复制整个表并重建二级索引。没有办法避免这种情况。
Aurora的二级索引写入性能很差。因此,您可以在添加主键之前暂时删除二级索引。
Amazon Aurora已经改变了很多InnoDB的内部结构,并且他们还没有发布精确调整选择所需的信息。 Aurora使用专有存储技术,并且没有太多可用于调整此信息的信息。因此,您可以尝试联系亚马逊以获得一些咨询帮助。