mariadb varchar 120个字符主键

mariadb varchar 120个字符主键,mariadb,Mariadb,我有一个启用了utf8mb4的mariadb(版本10.2.10)表。有一个varchar(120)列jobID,它唯一地标识行。目前,我使用的jobID长度为60个字符(将来可以增加)。所以,我把它做成了主键 现在,我有6万张唱片。因此,当我使用检查datafile+indexfile的大小时,它的数据文件大小几乎等于indexfile。因此,由于我声明的主键,随着数据文件的上升,索引文件以1:1的比例上升 因此,我开始考虑像前面讨论的那样添加一个整数自动递增主键,并将jobID列作为唯一键。

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

现在,我有6万张唱片。因此,当我使用检查datafile+indexfile的大小时,它的数据文件大小几乎等于indexfile。因此,由于我声明的主键,随着数据文件的上升,索引文件以1:1的比例上升

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

我现在的任务是创建表格

CREATE TABLE jobsTable (
 `jobId` varchar(100) NOT NULL,
 `status` varchar(15) NOT NULL,
 `addedTime` varchar(13) NOT NULL,
 PRIMARY KEY(`jobId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

根据定义(在MySQL中),
主键是唯一的。听起来你有这个:

CREATE TABLE ...
    ...
    PRIMARY KEY(jobID),
    UNIQUE(jobID) -- redundant, and a waste of space; DROP it.
...
在InnoDB中,数据和PK共存(“集群”)。但每个“辅助”键都会占用更多空间

如果这还不能解释,那么。。。如果不查看
SHOW CREATE TABLE
,则无法回答。那么一个样本jobID看起来是什么样的呢


根据辅助键的数量以及它们的类型,我可能会建议使用
AUTO_INCREMENT
PK。

Hi@rick james,我添加了create table。我只定义了主键。没有定义唯一键。谢谢你的回复,真奇怪。“索引长度”应保持为0(或16KB)。请提供
显示表格状态,如“jobsTable”