我的图形数据库中有大约10k个用户节点。我知道它不是太多,但我正在寻找我的案例的最佳解决方案。哪种情况下性能更好
我需要标记一些用户并在以后查询。
我想出了两个解决方案(至少现在),但我无法确定哪一个解决方案最适合性能,您如何看待我的可能解决方案?
1 - 我可以添加新属性给我所有的用户节点默认值为false。
MATCH (u:User) SET u.marked = false
之后,我会为所有需要稍后查询的用户设置标记属性为true。可以说有50个。
后来,当我需要的那些标记的用户,我会查询,如:
MATCH (u:User) WHERE u.marked = true RETURN u
2 - 我可以新属性仅添加到这些用户,我将在以后需要,不修改其他用户节点。像下面这样:
MATCH (u:User) WHERE u.id IN [...,123,456,789,...] SET u.marked = true
后来,当我需要显着的用户,我会查询,如:
MATCH (u:User) WHERE u.marked = true RETURN u
或
MATCH (u:User) WHERE EXISTS(u.marked) AND u.marked = true RETURN u
如果你知道解决我的问题的另一种方式,我是征求意见。
在此先感谢。
您可以将标记的用户标识存储在单独的表中。当你需要再次标记它们时,你只需清除以前的结果并保存新的结果。如果需要,稍后可以轻松添加其他属性。 – Edgar
在查询之前使用'PROFILE'会得到它的详细信息。 like'PROFILE MATCH(u:User)WHERE u.marked = true RETURN u' –
只要你知道,在描述的第二个选项中,u.marked = true的匹配就足够了。这里不需要存在检查。 – InverseFalcon