我在OrientDB中遇到查询问题。
SELECT FROM (
MATCH
{class: article, as: article}.in('authorOf'){as: author}
RETURN article, author
) ORDER BY createdAt desc SKIP 0 LIMIT 50
如您所见,我想与相应的作者一起获取最近50篇最新文章。我面临的问题是子查询首先遍历我的所有文章,然后将其传递给父项,然后进行过滤。这显然不是很有效,因为当我只需要其中的50篇时,所有文章都被加载到内存中。
有人知道更好的方法,而不必使用多个查询。
答案 0 :(得分:2)
你可以试试
select @rid as article,in('authorOf')[0] as author from article order by createdAt desc SKIP 0 LIMIT 50
有了这个,我的表现会更好,但没什么极端的。
按照路易吉的评论编辑
在createdAt
属性上创建索引:
CREATE INDEX article.createdAt ON article (createdAt) NOTUNIQUE
PS
我不确定您的查询中的order by
是否正常运作