我想知道主键的长度对性能有非平凡的影响。例如,请考虑以下表定义
CREATE TABLE table1 (
id VARCHAR(50) PRIMARY KEY,
first_column VARCHAR(50) NULL,
second_column VARCHAR(75) NOT NULL
);
CREATE TABLE table2(
id VARCHAR(250) PRIMARY KEY,
first_column VARCHAR(50) NULL,
second_column VARCHAR(75) NOT NULL
);
table1的表现是否优于table2,为什么?
答案 0 :(得分:2)
通常,性能将更多地取决于存储的内容而不是varchar列的长度。如果varchar(50)和varchar(250)列的中位长度都是40个字符,那么它们可能具有相似的性能。
在某些dbms中,主键默认也是群集键。但是,如果您的主键不适合作为群集密钥,则通常告诉dbms不使用群集密钥。
答案 1 :(得分:0)
是的,使用varchar(50)的主键将更有效。正如您所知,主键上包含Clustered Index,并且只要在表中输入新记录,该值将在内部以聚簇索引排列。您将在数十亿条记录中看到这种差异。 所以一般建议它有一个自然的主键。像id等。