【发布时间】:2011-08-03 16:27:37
【问题描述】:
目前,我的系统中有一堆表,它们需要每行存储一条评论(不是按内容类型或其他任何东西 - 每行只有一条评论,没有历史跟踪)。创建一个评论表并从所有其他需要 cmets 的表中获得一个 FK,而不是直接在每个表中创建一个评论列,有什么好处吗?
就这两种方法的数据库性能而言,物理数据库方面是否有任何优势?
【问题讨论】:
标签: database-design
目前,我的系统中有一堆表,它们需要每行存储一条评论(不是按内容类型或其他任何东西 - 每行只有一条评论,没有历史跟踪)。创建一个评论表并从所有其他需要 cmets 的表中获得一个 FK,而不是直接在每个表中创建一个评论列,有什么好处吗?
就这两种方法的数据库性能而言,物理数据库方面是否有任何优势?
【问题讨论】:
标签: database-design
在没有测试的情况下,真的不可能对性能做出有意义的评论(咳嗽)。你是唯一一个处于合理位置的人这样做。
在逻辑层面,关于行中数据的注释应该与行一起存储。
一些 dbms 会在内部将宽列移动到辅助存储区域。当您不选择注释列(较少的物理读取)时,这会加快对行的访问速度,但是当您选择注释列(从内部数据结构的不同部分读取)时,它会减慢访问速度。除非您从数百万行中选择数千行,否则您可能不会注意到差异。 (但是,再一次,测试......)
【讨论】:
拥有一个单独的表并依赖于连接,这可能是一个性能问题。除非相同的评论出现在多个表格中,否则没有理由将其分开。
【讨论】: