これは、あなたが探している答えではないかもしれません。私はこれが何とか可能だと確信していますが、あなたはActiveRecordで多形性がどのように設計されているのか、それはおそらく痛みを引き起こすでしょう。
私にとって最初に質問するのはなぜですか?あなたはパフォーマンスの最適化を求めています。パフォーマンスの問題が発生していますか?計装、New Relic、Rubyプロファイラなどのツールを使ってこの2回目の検索が実際にあなたのパフォーマンスを殺していることを確認しましたか?あなたがこれをやっていないなら、おそらくあなたの時間を無駄にしているでしょう。パフォーマンスのボトルネックを予測することは、不正確な科学であり、80-20ルールの対象となります。
本当に本当にこの問題があり、ログ、新しいRelicグラフの分析に徹底していたら、問題を切り離してパフォーマンステストを実行したことがあります。この問題でパフォーマンスの問題が発生していると思われる場合は、おそらく非正規化のソート手法を使用すると改善が見込まれます。非正規化は、データベースのパフォーマンスの問題を最適化するための一般的なツールです。複数の場所にデータを格納していますが、レコードを更新する際に複数のビットを同期させる余分なオーバーヘッド(より複雑なアプリケーションコード)で、クエリの数を減らす(より速く)ようになります。
例についてもう少し詳細を投稿することができれば、より具体的な提案や例の提示は簡単になります。
を使用して、レールに我々はPerconaとDBの最適化の会話をしました。 彼らが最初に言ったことの1つは、この多型関連が私たちのDBを殺しているということです。 我々は数百万行のテーブルを扱っているので、これはクエリとインデックス作成の両方に非常にコストがかかる操作です。 これはvarcharであるため、整数よりもさらに高価です。 それを掘り出してどれほど難しいかも知れないとき、私はPerconaに戻って、もし私たちがいなければ、絶対に取り除かなければならないと言っていました。 だからこそ... – KensoDev
実際のパフォーマンスデータを見てもまだまだ良いと思います。しかし、おそらく、非正規化が解決策である可能性があります。いくつかの例を掲載して、それについてさらに議論するのはなぜですか? –
ところで、あなたが答えが好きだったら、それを受け入れてください(その隣に大きなチェックマークが付きます)。 –