我的密码查询如下(我希望找出已在部门购买的用户)
START n=node:sectors('SECTOR_ID:65, SECTOR_ID:66 ...') // 20 sectors
MATCH (n)-[:HAS_DOMAIN]->(dom)-[:HAS_CAT]->(cat)<-[:BELONGS_TO]-(prod)-[:BOUGHT_BY]->(user)
RETURN n.sector_name, COUNT(user), COLLECT(DISTINCT(product.name)), ... etc.
Run Code Online (Sandbox Code Playgroud)
我发现因为在每次遍历时路径的数量呈指数增长,所以最终查询的结果时间为25秒.因此,即如果一个扇区有50个域,每个域有1000个类别,每个类别有250K ++产品.
在我看来,这是'超级节点问题'......或者路径太多了!
我应该使用Traverser API吗?我应该尝试以不同的方式建模数据吗?
欢迎任何想法!
Neo4j 1.8.3,Linux
谢谢!