rails,优化数据库查询

时间:2012-09-05 09:44:23

标签: mysql sql ruby-on-rails database database-performance

我有这样的模型结构:

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

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

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

有什么想法吗?

感谢您提前!

1 个答案:

答案 0 :(得分:1)

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

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

https://github.com/kostyantyn/hydra_attribute

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