0

我有这样的模型结构:

class Entity < ActiveRecord::Base
  habtm :properties_1
  # ... 
  habtm :properties_N
end

我需要通过任何一组属性编写请求,它会导致 N 个连接:

Entity.joins(:properties_1, :properties_N).where("properties_1.id = ? AND properties.N = ?", p1_id, pN_id) 

N 可能 > 20

我可以使用什么来提高查询性能?

我考虑将所有这些设置缓存到具有序列化属性的大表中,但看起来这个问题很常见,并且可能存在任何现有的解决方案。

有任何想法吗?

感谢提前!

4

1 回答 1

1

这看起来像实体-属性-值 (EAV) 模式。

http://www.slideshare.net/stepanyuk/implementation-of-eav-pattern-for-activerecord-models-13263311

https://github.com/kostyantyn/hydra_attribute

EAV在关系数据库中不是很好的解决方案,最好使用像MongoDB这样的面向文档的数据库

于 2012-09-05T10:10:35.473 回答