【发布时间】:2017-03-07 19:43:09
【问题描述】:
我目前开始使用 Neo4J 和它的查询语言密码。 我有多个遵循相同模式的查询。
我正在对 SQL 数据库和 Neo4J 进行一些比较。
在我的 Neo4J 数据库中,我拥有一种标签(人)和一种关系(朋友)。该人具有personID、姓名、电子邮件、电话等属性。 现在我想拥有朋友的第n个学位。我也想过滤掉那些也是朋友程度较低的人。 例如,如果我想搜索 3 度的朋友,我想过滤掉那些也是第一和/或第二度朋友的朋友。
这里是我的查询类型:
MATCH (me:person {personID:'1'})-[:FRIENDSHIP*3]-(friends:person)
WHERE NOT (me:person)-[:FRIENDSHIP]-(friends:person)
AND NOT (me:person)-[:FRIENDSHIP*2]-(friends:person)
RETURN COUNT(DISTINCT friends);
我在某处发现了类似的东西。
此查询有效。
我的问题是,如果我搜索更高程度的友谊和/或如果人数变得更多,这种查询模式会很慢。
如果有人可以帮助我优化它,我将不胜感激。
【问题讨论】: