【问题标题】:Which approach is better - comment attribute in each table vs one comment table哪种方法更好 - 每个表中的评论属性与一个评论表
【发布时间】:2011-08-03 16:27:37
【问题描述】:

目前,我的系统中有一堆表,它们需要每行存储一条评论(不是按内容类型或其他任何东西 - 每行只有一条评论,没有历史跟踪)。创建一个评论表并从所有其他需要 cmets 的表中获得一个 FK,而不是直接在每个表中创建一个评论列,有什么好处吗?

就这两种方法的数据库性能而言,物理数据库方面是否有任何优势?

【问题讨论】:

    标签: database-design


    【解决方案1】:

    在没有测试的情况下,真的不可能对性能做出有意义的评论(咳嗽)。你是唯一一个处于合理位置的人这样做。

    在逻辑层面,关于行中数据的注释应该与行一起存储。

    一些 dbms 会在内部将宽列移动到辅助存储区域。当您不选择注释列(较少的物理读取)时,这会加快对行的访问速度,但是当您选择注释列(从内部数据结构的不同部分读取)时,它会减慢访问速度。除非您从数百万行中选择数千行,否则您可能不会注意到差异。 (但是,再一次,测试......)

    【讨论】:

      【解决方案2】:

      拥有一个单独的表并依赖于连接,这可能是一个性能问题。除非相同的评论出现在多个表格中,否则没有理由将其分开。

      【讨论】:

      • 不,相同的评论不会出现在多个表中。从数据库调优的角度来看,将所有这些 cmets 放在一个表中不是一个优势吗,因为注释长度可以从几个词到几百行不等(是的,我们确实有这么长的 cmets)。
      • 这也取决于您计划如何/是否计划索引 cmets。在检索单个条目时,最好将它们放在同一个表中。
      • 感谢乔恩的回答。我决定让 cmets 内联。
      猜你喜欢
      • 1970-01-01
      • 2020-01-09
      • 1970-01-01
      • 2019-10-01
      • 2015-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-10
      相关资源
      最近更新 更多