OrientDB同时使用MATCH和SELECT时的查询性能问题
Query performance issues when using MATCH and SELECT together 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篇文章时,所有文章都加载到内存中。
有谁知道无需使用多个查询的更好方法。
你可以试试
select @rid as article,in('authorOf')[0] as author from article order by createdAt desc SKIP 0 LIMIT 50
有了这个,我的表现稍微好一些,但没有什么极端的。
根据 Luigi 的评论进行编辑
在 createdAt
属性 上创建索引:
CREATE INDEX article.createdAt ON article (createdAt) NOTUNIQUE
PS
我不确定您查询中的 order by
是否正常工作
我在 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篇文章时,所有文章都加载到内存中。
有谁知道无需使用多个查询的更好方法。
你可以试试
select @rid as article,in('authorOf')[0] as author from article order by createdAt desc SKIP 0 LIMIT 50
有了这个,我的表现稍微好一些,但没有什么极端的。
根据 Luigi 的评论进行编辑
在 createdAt
属性 上创建索引:
CREATE INDEX article.createdAt ON article (createdAt) NOTUNIQUE
PS
我不确定您查询中的 order by
是否正常工作