我的密码查询如下(我正在寻找已购买部门的用户)
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.
我发现因为每次遍历路径的数量呈指数增长,最终查询的结果时间为 25 秒。因此,即如果一个部门有 50 个域,则每个域有 1000 个类别,每个类别有 250K++ 产品。
在我看来,这是“超级节点问题”……或者路径太多了!
我应该使用 Traverser API 吗?我应该尝试以不同的方式对数据进行建模吗?
欢迎任何想法!
Neo4j 1.8.3,Linux
谢谢!