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

これは、Entity-Attribute-Value (EAV) パターンのように見えます。

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

https://github.com/kostyantyn/hydra_attribute

EAV はリレーショナル データベースでは適切なソリューションではありません。MongoDB のようなドキュメント指向の DB を使用することをお勧めします。

于 2012-09-05T10:10:35.473 に答える