表主键长度

时间:2013-09-24 06:39:30

标签: sql primary-key ddl

我想知道主键的长度对性能有非平凡的影响。例如,请考虑以下表定义

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,为什么?

2 个答案:

答案 0 :(得分:2)

通常,性能将更多地取决于存储的内容而不是varchar列的长度。如果varchar(50)和varchar(250)列的中位长度都是40个字符,那么它们可能具有相似的性能。

在某些dbms中,主键默认也是群集键。但是,如果您的主键不适合作为群集密钥,则通常告诉dbms不使用群集密钥。

答案 1 :(得分:0)

是的,使用varchar(50)的主键将更有效。正如您所知,主键上包含Clustered Index,并且只要在表中输入新记录,该值将在内部以聚簇索引排列。您将在数十亿条记录中看到这种差异。 所以一般建议它有一个自然的主键。像id等。