【发布时间】:2017-09-01 17:48:15
【问题描述】:
现在向表添加主键需要 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.
【问题讨论】:
-
旋转磁盘还是 SSD?多少行?还有多少其他指标?您是否调整过您的 InnoDB 引擎,或者您是否正在使用 InnoDB?这里的变量太多了。
-
嗨@tadman;谢谢。只需在编辑后的帖子中回答您的问题。谢谢。
-
存储组件在这里非常重要。 HDD 将比 SSD 慢几个数量级。我刚刚进行了这样的迁移,在普通 HDD 上需要一周时间,但在 SSD 上只需要六个小时。
-
感谢@tadman。只需确认查询是在 SSD 上运行的。
标签: mysql indexing query-optimization primary-key