代码之家  ›  专栏  ›  技术社区  ›  alexanoid

Neo4j Cypher查询优化可获得更好的性能

  •  0
  • alexanoid  · 技术社区  · 3 年前

    我现在无法在大数据集上测试这一点,只是想知道Neo4j中的Cypher查询会更快地工作,以便正确设计系统:

    方法#1:

     WHERE apoc.coll.containsAllSorted($profileDetailedCriterionIds, childD.mandatoryCriterionIds) 
    

    方法#2:

    (p:Profile {id: $profileId})-[:HAS_VOTE_ON]-(c:Criterion)<-[:HAS_VOTE_ON]-(childD) 
    WHERE c.id IN childD.mandatoryCriterionIds 
    WITH childD, COLLECT(c.id) as cIds, 
    WHERE size(cIds) >= size(childD.mandatoryCriterionIds)
    

    哪里 $profileDetailedCriterionIds 是通过查询参数提供的一组id

    为了获得更好的性能,我应该选择什么方法?

    0 回复  |  直到 3 年前
        1
  •  1
  •   jose_bacoy    3 年前

    在Neo4j浏览器中运行这两个查询,但在查询的开头放一个关键字PROFILE。当两个查询都完成时,它将显示PROFILING或关于查询执行方式的解释。然后转到左边的最后一个选项卡,查看使用APOC函数的部分,比较数据库命中率和不使用APOC功能的页面缓存。