在OrientDB中使用MATCH和SELECT时查询性能问题

时间:2017-06-08 08:11:53

标签: orientdb

我在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篇时,所有文章都被加载到内存中。

有人知道更好的方法,而不必使用多个查询。

1 个答案:

答案 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是否正常运作