どのユーザーが誰をフォローしているかを示すアクティビティ テーブルがあります。(fromUser
およびtoUser
) フォロワーの中で誰が最も多くの評価を投稿したかを確認するリーダーボードを作成しています。
だから私はこのクエリを作成しました:
ParseQuery<ParseObject> queryActivityFollowing = new ParseQuery<>("Activity");
queryActivityFollowing.whereEqualTo("type", "follow");
queryActivityFollowing.whereEqualTo("fromUser", ParseUser.getCurrentUser());
queryActivityFollowing.setLimit(500);
// innerQuery, only get Users posted by the users I follow
ParseQuery<ParseUser> queryUserFollowing = ParseUser.getQuery();
queryUserFollowing.whereMatchesQuery("toUser", queryActivityFollowing);
// querySelf
ParseQuery<ParseUser> querySelf = ParseUser.getQuery();
querySelf.whereEqualTo("objectId", ParseUser.getCurrentUser().getObjectId());
List<ParseQuery<ParseUser>> queries = new ArrayList<>();
queries.add(queryUserFollowing);
queries.add(querySelf);
query = ParseQuery.or(queries);
query.orderByDescending("rating_count");
query.setLimit(20);
しかし、どういうわけか、タイムアウトして結果が表示されません。私のクエリで非効率的なものはありますか?
ありがとう!
編集:
データの説明:
は、 、、 のActivity
3 つの列を持つクラスです。クラスへのポインタであり、文字列ですfromUser
toUser
type
fromUser
toUser
_User
type
には、従来の属性と、 orderBy 基準である_User
という名前の整数があります (上記の更新されたコード)。rating_count
実際、クエリはタイムアウトしないと思いますが、結果は 0 です。私は何人かのユーザーをフォローしているので、それは間違いなく期待される出力ではありません.