我打算通过match (c:Column {schema:'a.b', name:'c'})<-[cd:CD*1..3]-(c_up:Column) return c, cd, c_up
检索到特定节点的最近距离小于N的所有传入节点,这实际上需要大约。 8s返回所有结果。我试图通过profile {sql}
对其进行概要分析,这就是返回的结果:
https://i.ibb.co/fYbD2vn/WX20190326-145433-2x.png(在我当前的情况下,图像粘贴在stackoverflow中会崩溃,因此我粘贴到了另一台主机上)
我已经通过CREATE INDEX ON :Column(schema, name)
创建了索引,但这对var-length路径搜索的执行计划没有任何帮助。有什么想法可以优化VarLengthExpand
和Filter
上的巨大数据库匹配吗?谢谢。
答案 0 :(得分:0)
我已经通过CREATE INDEX ON:Column(schema,name)创建了索引,但是它对变长路径搜索的执行计划没有任何帮助。
您的索引并不能直接帮助varlengthexpand
,但实际上可以大大加快查询速度。 (看一下第一个操作NodeIndexSeeker
,它仅返回2个匹配项)
针对您的用例:
我打算检索所有最近的距离小于N的传入节点,
我认为返回cd
是浪费,您可以使用distinct
避免两次返回节点c_up
。
首页有一个示例:DISTINCT nodes from variable-length paths :
MATCH (c:Column {schema:'a.b', name:'c'})<-[cd:CD*1..3]-(c_up:Column)
RETURN DISTINCT c, c_up
答案 1 :(得分:0)
我认为您的问题不只是看起来很小的查询,而是: