【问题标题】:Should Cartesian product stored in a single table or it should be split [closed]笛卡尔积应该存储在单个表中还是应该拆分[关闭]
【发布时间】:2018-09-28 19:37:21
【问题描述】:

我们有一个笛卡尔积,目前我们存储在一个表中,这个表正在急剧增长,用户可以对这些实体执行更新和读取操作,当用户删除记录时我们有一个软删除。 现在我们正受到读取和更新操作的性能问题的打击。 基本上,这个笛卡尔积拥有不同角色和类别的权限。

想知道是否有人遇到过类似情况并了解存储笛卡尔积的最佳做法。

我还考虑将其拆分为 N 个表,然后为每种类型单独写入和更新,然后在读取时执行连接。

那么存储笛卡尔积的最佳做法是什么。

【问题讨论】:

  • 您忘记提问了吗?
  • 支持OLTP 的数据库的典型做法是以规范化形式存储数据,这排除了存储笛卡尔积。然而,对于数据集市或仓库来说,存储笛卡尔积(例如“立方体”)是很常见的。这取决于您的数据库的用途以及您希望优化的内容。

标签: c# .net sql-server database database-performance


【解决方案1】:

笛卡尔积只是表示两个表的乘积,否则它只是一个表而不是笛卡尔积,所以当然应该拆分它,并且在需要时,可以从这两个表中产生笛卡尔积。

假设 Table1 和 Table2 各有 1000 条记录,这 2 条的笛卡尔积将有 1000000 条记录,这些记录可以简单地从这 2000 条记录中产生。

当然,使用条件,您可能只生产您需要的笛卡尔积的一部分,而不是全部。

【讨论】:

    猜你喜欢
    • 2013-07-14
    • 1970-01-01
    • 2021-05-18
    • 1970-01-01
    • 2021-06-27
    • 1970-01-01
    • 2012-01-03
    • 2020-09-12
    • 1970-01-01
    相关资源
    最近更新 更多