0

クエリの結果を Ref フィールドでソートしたいデータ操作に遭遇しました。

次のデータ オブジェクトがあるとします。

  1. EmployeeDO {長い ID、文字列名、Ref refCompany}

  2. CompanyDO {長い ID、文字列名}

ここで、会社名で並べ替えられた従業員にクエリを実行したいと思います。

クエリを実行してみました

Query<EmployeeDO> query = ofy().load().type(EmployeeDO.class).order("refCompany");

明らかに、これは結果を会社名でソートしませんでしたが、これも正常にコンパイルされました。

この方法でそのような並べ替えが可能かどうか、または他の回避策を試すことができるかどうかを提案してください。

4

1 に答える 1

0

@Index refCompany を使用している場合は、refCompany で注文できますが、会社名で並べ替えることはできません。キーでインデックスを作成します (@Parent を使用していない場合は、id 順のみ)。

2 つの「通常の」選択肢があります。

  • データをRAMにロードし、そこでソートします。これは、RDBMS が内部的に行うことです。GAE が結合をサポートしていないというのは正確には正しくありません。それは、あなたがクエリ プランナーであるということだけです。

  • companyName を非正規化して事前にインデックス付けします。EmployeeDO@Index companyNameに入れます。これは、魔法の並べ替えのパフォーマンスが低い場合 (たとえば、従業員が多すぎる場合)、RDBMS で行うことです。

于 2013-06-30T15:53:36.620 に答える