对于这两个查询,您应该能够通过将它们组合成一个多查询来加快速度,特别是因为您的第二个查询包括第一个查询。这是最复杂的一个,如果你在单独的API调用中发送它们,Facebook必须执行两次。
{
'q1':"SELECT actor_id, message FROM stream
WHERE filter_key IN
(SELECT filter_key FROM stream_filter WHERE uid= me() AND type='newsfeed')
AND actor_id IN (SELECT uid2 FROM friend WHERE uid1 = me())
LIMIT 50",
'q2':'SELECT pic_big, name, url, id FROM profile WHERE id IN
(SELECT actor_id FROM #q1)'
}
当我在Graph API浏览器中运行时,您的两个查询需要4072+1304=5376ms。多重查询耗时3475ms。由于运行两个单独的查询消除了网络延迟,这应该会大大加快应用程序的速度。
您可以通过添加筛选出空白邮件
AND strlen(message) > 0
到
WHERE
第一个查询的一部分。
您可以使用
ORDER BY column
强制按特定顺序返回数据,但不能保证您会得到结果中的所有行。