繰り返しますが、誰かが同じ問題を抱えているかどうか、または誰かがパフォーマンスを改善する方法を知っているかどうかを確認するために、このスレッドを作成しています。最初にシナリオを説明しましょう。たとえば、Product という名前の JDO エンティティがあります。その製品には、別のエンティティのフィールドがあります。単純なもの (例: 長い ID、文字列名、文字列値) と 1 つの日付です。製品の 10000 オブジェクトを作成しましたが、日付を使用して製品をクエリしようとすると、パフォーマンスは良好ですが、type.id == 12 を追加すると、パフォーマンスが 100 ミリ秒から 30 秒に低下します... Typeオブジェクトが製品に長いtypeIdを設定すると、同じクエリも高速になります...私が心配しているのはスケーラビリティです。構造を平坦化し、実際には接続されていないが追加のアプリケーション取得が必要な ID を使用する必要がありますか、または Product.Type のクエリのパフォーマンスを向上させる方法はありますか? 事前にどうもありがとうございました。
すでに fetchGroups を定義しようとしましたが、実際には機能しません...
私が実際にやりたかったのは、製品の ID を介して一種のマッピングを行うことですが、埋め込まれた注釈ではそれを行うことができませんでした...
それで、もう少し詳しく説明させてください。私は Reading という名前のクラスを持っています (1 つの Date timeStamp と Product p)。これはクエリを実行しています。フィルタが次のような場合:
String filter = "timeStamp > fromDate && timeStamp < toDate";
これを行うと、クエリは100ミリ秒で実行されます
String filter = "timeStamp > fromDate && timeStamp < toDate && prod.id == '941'"
たとえば、30秒かかります...ログを見ましたが、製品のクエリがなければキャッシュから読み取るだけです。製品の句を追加すると、すべてのオブジェクトを取得しているようで、値の比較を開始すると思います...どうすればいいのかよくわかりません。おそらく、これらすべてのクラスを切断し、Reading クラスで String productID のように使用し始める必要があります。その後、すべてが再び高速になり始めます...しかし、実際には、接続はそうではありませんそこでは、アプリケーション層に実装されます...ありがとうございます...何かアドバイスはありますか?
生成されたクエリは次のようなものです。 .util.Date