使用 jpa 的 postgresql bigserial 或序列

OJV*_*JVM 4 postgresql database-design primary-key

我是一名使用 jpa 的 Java 开发人员,在定义我的实体中的索引之前,我想知道哪个更快或更好用?。

Nei*_*gan 9

bigserial只是创建序列的简写。因此,如果您包括输入所需的时间,bigserial 具有更好的“性能”:)

CREATE TABLE tablename (
    colname BIGSERIAL
);
Run Code Online (Sandbox Code Playgroud)

等于

CREATE SEQUENCE tablename_colname_seq;

CREATE TABLE tablename (
    colname biginteger DEFAULT nextval('tablename_colname_seq') NOT NULL
);
Run Code Online (Sandbox Code Playgroud)

另外,如果这些是主键,那么它们已经被索引,所以你不需要索引它们(外键列不会自动索引,仅供参考)。

对于 JPA,您应该@GeneratedValue(strategy=GenerationType.IDENTITY)用于 PostgreSQL 串行/大串行列。