没有Type的Rails多态关联(唯一id)

Ken*_*Dev 8 activerecord ruby-on-rails-3

在我的应用程序中,每个对象(表)都有一个唯一的id.

现在,正因为如此,当使用看到id时,我知道它是什么对象类型,无论是用户还是酒店.

我想知道是否可以在多态关联中保存item_type的查找,在内存中使用id序列查找修补查找,从而节省DB和索引中的空间.

可以这样做吗?

我正在使用Rails 3.0.9,Ruby 1.9.2

Wol*_*old 1

这可能不是您正在寻找的答案。我确信这在某种程度上是可能的,但是您将与 ActiveRecord 中多态性的设计方式作斗争,这可能会导致大量的痛苦。

我想到的第一个问题是为什么?您要求性能优化。您是否发现性能问题?您是否使用检测、New Relic、Ruby 分析器和其他工具验证了第二次查找确实是影响您性能的原因?如果您还没有这样做,那么您可能是在浪费时间。预测性能瓶颈是一门不准确的科学,并且受制于 80-20 规则。

如果你真的、真的有这个问题,并且你已经彻底分析了你的日志、New Relic 图表,那么你已经隔离了问题并针对它运行了性能测试,如果你已经完成了所有这些,并且你看到了如果这个问题存在性能问题,那么我建议某种非规范化解决方案可能会给您带来一些改进。非规范化是优化数据库性能问题的常用工具。您将数据存储在多个位置,但您的查询将接触更少的表(更快),但在更新记录(更复杂的应用程序代码)时保持多个位同步的额外开销。

如果您可以发布有关示例的更多详细信息,那么提出一些更具体的建议或给出示例会更容易。