mariadb varchar 120个字符的主键

时间:2017-11-28 02:49:46

标签: mariadb

我有一个启用了utf8mb4的mariadb(版本10.2.10)表。 varchar(120)列jobID唯一标识该行。目前,我正在使用长度为60个字符的jobID(将来可以选择增加)。所以,我把它变成了主键。

现在,我有60K的记录。因此,当我使用detail given here检查datafile + indexfile的大小时,它的数据文件大小几乎等于indexfile。因此,当数据文件因为我声明的主键而上升时,索引文件以1:1的速度上升。

所以,我开始考虑添加一个整数自动增量主键,如here所述,并将jobID列作为唯一键。但是随着数据文件的索引文件以1:1的比例上升,以及随着表的大小的增加,表中新插入的性能降低(该表将在未来几天内有2000万条记录)的问题让我感到困惑。什么应该是正确的方法?提前谢谢。

我现在的创建表。

SplittableRandom

1 个答案:

答案 0 :(得分:1)

根据定义(在MySQL中)PRIMARY KEYUNIQUE。听起来你有这个:

CREATE TABLE ...
    ...
    PRIMARY KEY(jobID),
    UNIQUE(jobID) -- redundant, and a waste of space; DROP it.
...

在InnoDB中,数据和PK共存("聚集")。但每个"中学"密钥占用更多空间。

如果这不能解释,那么......在没有看到SHOW CREATE TABLE的情况下无法回答。示例jobID是什么样的?

根据辅助密钥的数量及其含义,我可能会建议使用AUTO_INCREMENT PK