【发布时间】:2021-09-20 01:21:02
【问题描述】:
我为这个糟糕的标题道歉,但我不知道该如何表达它。
假设我想创建一个us_states 表,如下所示:
create table us_states
(
id serial,
name varchar(256) not null constraint us_states_pk primary key,
code varchar(256) not null
);
如果我不打算将 db_table 中的自动增量 id 列用作所述 db_table 的主键,那么它有什么实际好处(如果有的话)?
【问题讨论】:
-
每个条目都将获得它自己的轻量级 Id 值,而没有主键会带来的“复杂性”,例如唯一常量、索引、外键机制等。您还可以查看自创建表以来该表中有多少条目。
-
其实,没关系。我现在完全理解你的说法了。非常感谢您的精彩回答。
-
自动增量只会确保您不必在每次插入时手动插入 ID 值。主键仍然可以是自动增量的,但是您必须建立一种机制来确保新插入的行具有唯一值。您只需确保新行获得“可能的最大值+1”,因为它是主键/id,就复杂性而言,您可以节省一些计算时间......我建议你阅读手册......或者关于主键的讲座和它的功能
-
会的。非常感谢!
-
不相关,但是:varchar 最大长度的所谓“神奇”值 256 并不意味着任何性能或存储优化,例如如果您假设 260 或 275,那么 256 在某种程度上比更高的值“更好”。
标签: database postgresql