Performance Neo4j密码查询、性能问题、多起点

Performance Neo4j密码查询、性能问题、多起点,performance,neo4j,spring-data,Performance,Neo4j,Spring Data,我必须执行以下查询: @Query("START whps=node:__types__(className = 'de.adma.domain.WHProcessStep'), csd=node:__types__(className = 'de.adma.domain.CSDocument'), whm=node:__types__(className = 'de.adma.domain.WHMachine') MATCH whps<-[r1:RELATES_TO]-csd<-

我必须执行以下查询:

@Query("START whps=node:__types__(className = 'de.adma.domain.WHProcessStep'), 
csd=node:__types__(className = 'de.adma.domain.CSDocument'),
whm=node:__types__(className = 'de.adma.domain.WHMachine')
MATCH whps<-[r1:RELATES_TO]-csd<-[r2:OCCURS_IN]-whm
WHERE (whps.id IN {0}) AND (csd.id IN {1})
RETURN DISTINCT whm ")
按照公式化的查询是否是查询neo4j的正确方法


目前,这适用于高达10万个节点/关系(查询需求如果只删除START子句的这些部分是否更好

csd=node:__types__(className = 'de.adma.domain.CSDocument'),
whm=node:__types__(className = 'de.adma.domain.WHMachine')

您正在生成所有开始变量的笛卡尔乘积,然后在匹配中减少它。匹配后进行类型检查会更快。

在id索引上使用索引查找:

@Query("START whps=node:WHProcessStep(id = {0}), 
              csd=node:CSDocument(id = {1})
        MATCH whps<-[:RELATES_TO]-csd<-[:OCCURS_IN]-whm
        RETURN DISTINCT whm ")
@Query(“启动whps=node:WHProcessStep(id={0}),
csd=节点:CSDocument(id={1})

MATCH whpsI认为我必须这样做是因为IN子句?它基于模式遍历绑定MATCH子句中的csd、whm标识符。更好的是,找出三个类名之间的最低基数,并在开始时使用它,根据MATCH模式中的关系构建其他类名。然后在ma之后检查类型tch,如果需要的话(其他类型通过相同的reltypes连接)。感谢您的帮助。所有类型都具有相同的基数(数据是以相同的卷生成的)。嗯,我不明白这个只有一个开始类型的新查询会是什么样子(我对neo4j还是新手)。你能提供其他信息吗?只需在开始中删除其他起始点。这将是一个好的开始。随着模式匹配,标识符将绑定在匹配中。我想我需要在博客上发布一些cypher优化思想。好的一点,这可以通过索引查找来处理,因为id的问题。
@Query("START whps=node:WHProcessStep(id = {0}), 
              csd=node:CSDocument(id = {1})
        MATCH whps<-[:RELATES_TO]-csd<-[:OCCURS_IN]-whm
        RETURN DISTINCT whm ")
@Query("START whps=node:WHProcessStep({0}), 
              csd=node:CSDocument({1})
        MATCH whps<-[:RELATES_TO]-csd<-[:OCCURS_IN]-whm
        RETURN DISTINCT whm ")
Collection<WHMachine> find(String whps, String csd);