【发布时间】:2011-04-05 07:28:13
【问题描述】:
我正在构建一个应用程序,该应用程序允许在 5 个独特模型(帖子、照片、事件等)上使用 cmets,并且还有 2 或 3 个模型正在开发中。就目前而言,每个模型都有一个关联的评论模型(PostComments、PhotoComments、EventComments 等),尽管 cmets 本身在所有模型中通常都是相同的。
我最近发现了多态关联的强大功能,在 Railscast #154 中得到了完美的解释,它本质上将许多模型组合成一个模型,并将许多表组合成一个表。
虽然多态关联会清理代码和冗余,但它们如何影响性能?我对数据库优化了解不多,但是从通用评论表中的 1,000,000 行中查询评论似乎比在特定评论表中的 200,000 行中查询要花费更长的时间。是否值得切换到多态关联(虽然应用程序仍处于相对早期的开发阶段)还是我应该继续为每种类型的评论制作模型/表格?
【问题讨论】:
-
cmets 功能实际上是多态关联的最佳示例。 1000000 行对于具有适当索引和查询的体面的 mysql 服务器来说不算什么。不要尝试解决不存在的问题:)
标签: ruby-on-rails polymorphic-associations