我现在无法在大数据集上测试这一点,但我想知道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
我应该选择什么方法来获得更好的性能?
1条答案
按热度按时间kknvjkwl1#
在Neo4j浏览器中运行这两个查询,但是在查询的开头加上关键字PROFILE。当两个查询都完成时,它会显示一个PROFILING或解释查询是如何执行的。然后转到左边的最后一个选项卡,查看使用APOC函数的部分,并比较没有使用APOC函数时的数据库命中和页面缓存。