35個のフィールド(Char、Int、Bool、Dec、M2M、FK)を持つUserProfileモデルがあります。検索ビュー機能の一部として、フィールドの1つは全文検索を必要とし、残りの34フィールドは「高度な検索フィルタリング」を提供するために使用されます(__gte、__ lte、__ excat、__in、__ startswithを使用)。「検索」クエリでは、検索ビューの条件として5〜35個のフィールドを使用できます。
haystackを使用してSearchIndexを構築しており、現在35のフィールドすべてが追加されていますが、django ORM(?)をバイパスしているため、これは効果がないようです。
Filter Django Haystackからの回答はQuerySetのようになりますか?SearchIndexに単一の全文検索フィールドを格納し、残りの34個のフィルターフィールドに対してSearchQuerySetをdjangoのQuerySetと組み合わせることができることを示唆しています。次に、djangoモデルのこれらのフィールドの一部またはすべてでdb_index = Trueを使用しますか?この2段階のクエリマージアプローチを使用すると、何千もの結果にうまく対応できますか?
私のUserProfileモデルは300K〜2Mのエントリに成長する可能性があるため、このモデルにインデックスを付けるのに最適な方法を理解しようとしています。dbのインデックス作成と検索に慣れていないので、データベースを最適化するための最善の方法についての洞察を探しています。