【问题标题】:simple cypher query unreasonably slow - what am I doing wrong?简单的密码查询异常缓慢-我做错了什么?
【发布时间】:2014-10-06 11:33:25
【问题描述】:

我试图让所有关系都连接到一个给定的节点,这些节点也有一个名为“名称”的属性。这是我的密码:

MATCH (starting { number:'123' })<-[r]-() WHERE HAS(r.name) RETURN r

这是难以想象的慢!即使只有很少的返回值,也需要 neo4j 的年龄来计算,并且连接到节点的关系也不多(最多 1 到 10 个关系)。

我在这里做错了吗? 其他密码工作正常。

谢谢!

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    如果您没有向 Neo 充分了解您的图形结构,则一个节点上的关系数量可能不太相关。

    先用标签,再用索引。下面将在属性number 上使用标签YourLabel

    CREATE INDEX ON :YourLabel(number)
    

    然后点击索引开始查询,并在你的关系上使用类型。

    MATCH (:YourLabel{number:'123'})<-[r:RELATIONSHIP_TYPE]-() 
    WHERE HAS (r.name)
    RETURN r
    

    现在,它不再扫描每个节点以查找值为 123 的数字属性,而是仅读取一个索引。

    要使用标签,请像这样创建节点(将添加到索引中):

    CREATE (s1:YourLabel{number:"1"})
    

    【讨论】:

    • 我的错误在于“(starting { number:'123' })”部分,按照您的建议将其更改为“(:YourLabel{number:'123'})”解决了问题!谢谢
    猜你喜欢
    • 1970-01-01
    • 2021-07-27
    • 2021-07-17
    • 2016-02-12
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    相关资源
    最近更新 更多