複数の API 呼び出しではなく、FQL マルチクエリを使用して何かを行うことができるかどうかについて、頭を悩ませようとしています。
これが私のコードです:
var queries : Object = {
"user_list":"SELECT uid2 FROM friend WHERE uid1 = "+uid
,"event_id":"SELECT eid, start_time, end_time, location, pic, name FROM event
WHERE eid IN (SELECT eid FROM event_member
WHERE uid IN (SELECT uid2 FROM #user_list)
AND rsvp_status='attending') AND start_time > " + nowSecs + "
AND start_time < " + (nowSecs + 2500000) + " ORDER BY start_time ASC LIMIT 20"
"user_name":"SELECT name FROM user
WHERE uid IN (SELECT uid FROM event_member
WHERE eid IN (SELECT eid FROM #event_id)
AND uid IN (SELECT uid2 FROM #user_list) AND rsvp_status='attending')"
};
現在、'event_id' クエリでフェッチされる結果が多すぎます。現在、'user_list' クエリに保存されている各人のイベントの完全なリストを取得しています。次に、それらの結果を並べ替えます。私はこれを行うことができないようです.LIMITを使用すると、合計で1つの結果しか返されませんが、各人に対してではありません.
さらに、さらに重要なことに、「user_name」クエリのイベントごとに 1 つの結果のみが必要です。現在、同じイベントに参加している複数のメンバーを取得することがあり、ユーザー名を一致させる方法がないため、問題が発生します。結果が受信されると、対応するイベントで。また、同じユーザーが「event_id」に含まれる 2 つの異なるイベントに参加する場合、結果にはそのユーザーの名前のインスタンスが 1 つしかないことに気付きました。これも望ましくありません。
現時点では、'event_id' の結果が得られたら 20 回の API 呼び出しを行っており、返されたデータを並べ替えているため、アプリの速度が大幅に低下しています。
私が望むものを達成し、クエリを最適化する方法を誰かが提案できますか?
長い投稿で申し訳ありませんが、これは私の胸に何日もかかっています!
ありがとう