【问题标题】:Avoid having over 1500 columns in Postgres table避免 Postgres 表中有超过 1500 列
【发布时间】:2018-07-25 02:15:34
【问题描述】:

情况是: 我有很多不同的种子。 每个通过黑盒的种子都会输出超过 1500 个独特类别的值。传递相同的种子将导致相同类别的相同值。

如果没有包含超过 1500 列(每个类别一个列)的表,我无法创建表关系。

这更像是一个数学问题,但我不知道在哪里发布这个问题。

【问题讨论】:

    标签: database postgresql database-design datatable cryptography


    【解决方案1】:

    我建议将类别本身作为一个列。

    然后,您可以在该类别上添加唯一约束(或为您的目的唯一标识行的元组)。

    然后,您可以根据驱动程序脚本(或类似脚本)中的约束违规处理异常以继续(例如,在这种情况下,听起来应该是空操作,因为该行已经存在)。

    作为一种优化,您可以(我会说应该)在查询中添加一个exists 检查以查看该条目是否已经存在,如果存在,它将是一个无操作。

    根据您提供的信息,我认为不需要 1500 列。

    【讨论】:

      【解决方案2】:

      如果我理解正确的话,你的问题的 Postgres 已经有了解决方案

      如何避免 Postgres 表中的列超过 1500 列是使用 json 类型的列

      例如 - 使用 json 列创建表

      CREATE TABLE seeds (
        ID serial NOT NULL PRIMARY KEY,
        info json NOT NULL
      );
      

      如何向那里插入数据

      INSERT INTO seeds (info)
      VALUES (
       '{ "seed": "Seed1", "items": {"category": "1","qty": 6}}'
      );
      

      您也可以在这些列中进行查询:

      SELECT * FROM seeds WHERE info @> '{"category":"1"}';
      

      也许这会对你有所帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-01
        • 2021-12-10
        • 2020-03-24
        • 1970-01-01
        • 2020-04-01
        • 2023-03-05
        • 1970-01-01
        • 2019-08-19
        相关资源
        最近更新 更多