微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Neo4j - 正确添加索引

如何解决Neo4j - 正确添加索引

我有一个有点复杂的查询来检索 Post 类型的节点。查询看起来像这样。

MATCH (t:Tag) WHERE t.name='CAT' with t
MATCH (t)-[:HAS_TAG]-(p:Post) WHERE p.approval <> 2 AND (p.blocked= false OR p.blocked IS NULL)
with p where p.property1 >= 10 AND p.property1 < 3000000000
with p where not exists(p.property2) or  (p.property2 >= 100 and p.property2 < 43000)
with p where not exists(p.property3) or  (p.property3 >= 100 and p.property3 < 43000)
with p where not exists(p.property4) or  (p.property4 >= 100 and p.property4 < 43000)
with p ORDER BY p.property5 DESC SKIP 0 LIMIT 10
RETURN p;

我已经为 name 类型的 Tag 属性添加了索引。因此,当我运行配置文件查询时,它表明它在 name 属性上使用该索引。

现在我想使用索引来优化这个查询的其他部分。我不知道该怎么做,因为我使用了 with 关键字来分隔过滤部分。

我是否应该像这样创建一个复合索引:(property1,property2,property3,property4,approval,blocked)

我是否应该为每个属性创建单独的索引,因为它们由 with 短语分隔?.

解决方法

由于您没有对不同的属性进行 AND 运算,因此您需要为正在过滤的每个属性创建一个索引。

这个 blog post 可能有用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。