2

我想知道主键的长度是否对性能有重要影响。例如考虑下面的表定义,

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

4

2 回答 2

2

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

在一些 dbms 中,主键默认也是一个聚集键。但是,如果您的主键不适合作为集群键,您通常可以告诉 dbms 不要使用集群键。

于 2013-09-24T07:43:24.667 回答
0

是的,带有 varchar(50) 的主键会更有效。如您所知,主键上包含聚集索引,并且一旦在表中输入新记录,该值将在内部排列在聚集索引中。您将在数十亿条记录中看到这种差异。因此通常建议使用自然主键。比如id之类的。

于 2013-09-24T06:54:22.620 回答