【问题标题】:what is the right data type for unique key in postgresql DB?postgresql DB中唯一键的正确数据类型是什么?
【发布时间】:2012-07-31 11:05:28
【问题描述】:

我应该为 postgresql 数据库表中的唯一键(例如用户的 ID)选择哪种数据类型?
bigint 是一个吗?

谢谢

【问题讨论】:

    标签: postgresql database-design data-warehouse sqldatatypes


    【解决方案1】:

    使用 serial 类型自动增加唯一 ID。

    如果您计划拥有超过 20 亿个条目,请使用 bigserialserial 是 MySQL 的 AUTO_INCREMENT 的 PostgresSQL 等价物。

    PostgresSQL Documentation: Numeric Types

    【讨论】:

    • 我不建议这样做:如果您使用 serial 并通过 API 将此 ID 公开,那么您就可以让任何试图从您的网站上抓取数据的人变得轻松。
    【解决方案2】:

    bigint(或bigserial,如果您需要自动递增键)就可以了。

    如果知道对于确定您不会加载太多行,您可以考虑integer(或常规serial)并可能节省一些硬盘空间。

    【讨论】:

    • ...可能还有一些处理能力,至少在 32 位系统中。
    • 如果您计划在那里拥有大量数据或者您可能拥有 - 使用可用的最大类型。有时在实际系统/应用程序上确实会发生基本 int 耗尽
    【解决方案3】:

    根据this answer,当前推荐的执行自动递增唯一ID 的方法是使用generated as identity 语法而不是serial

    这是一个例子:

    -- the old way
    create table t1 (id serial primary key);
    
    -- the new way
    create table t2 (id integer primary key generated always as identity);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-30
      • 2021-12-22
      • 2021-02-20
      • 2010-11-15
      • 2020-04-21
      • 2019-07-08
      • 2017-12-17
      相关资源
      最近更新 更多