【问题标题】:How is Oracle able to achieve 1000 columns?Oracle是如何做到1000列的?
【发布时间】:2016-07-23 07:23:21
【问题描述】:

我正在尝试复制 Salesforce 在他们的数据库架构中所做的事情。基本上,他们有一个包含一千个 varchar(max) 列的 Oracle 表。他们将所有客户数据存储在此表中。我正在尝试用 SQL Server 完成同样的事情。但是,我只能在 SQL Server 中获得 308 个 varchar(max) 字段。我想知道 Oracle 是如何实现 1000 列限制的。我想在 sql server 中做同样的事情。

【问题讨论】:

标签: sql sql-server database oracle


【解决方案1】:

VARCHAR(MAX) 字段可以保存 GB 的信息...但是最大行大小是 8060 字节,那么它是怎么加起来的呢?好吧,它不会在行中存储 2GB,而是存储一个 24 字节的指针。这些指针加起来超过了您的行大小限制。

您可以将表拆分为列数较少的多个表,但我认为没有办法覆盖此限制。

【讨论】:

    【解决方案2】:

    恕我直言,一千列似乎比它的价值更麻烦。也许您可以采取更规范的方法。

    例如,我有一个链接到扩展属性表的 Object Def 表。 XP 表链接到 OD 并具有字段 XP-ITEM、XP-VALUE、XP-LM-UTC 和 XP-LM-Usr。这种结构允许任何对象具有任意数量的扩展属性……标准和/或非标准。

    下面的图片可能会给您更好的可视化效果。

    只是几个注意事项:

    1) 这不适用于大量交易数据,即每日贷款余额

    2) 每个项目 ID 都可以链接回一个对象,该对象具有自己的属性,例如选择列表、Excel 格式等。

    3) 一次可以查看整个编辑历史记录(谁、什么、何时)

    【讨论】:

      猜你喜欢
      • 2012-10-30
      • 1970-01-01
      • 2019-10-02
      • 1970-01-01
      • 2011-01-13
      • 2011-06-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多