我正在尝试使用 cypher 查找用户“mike”不喜欢的 10 个帖子。将带有 NOT 关系的 where 子句比匹配可选关系然后在 where 子句中检查该关系是否为 null 更有效吗?具体来说,我想确保它不会执行相当于全表扫描的操作,并确保这是一个可扩展的查询。
这是我正在使用的
START user=node:node_auto_index(uname:"mike"),
posts=node:node_auto_index("postId:*")
WHERE not (user-[:LIKES]->posts)
RETURN posts SKIP 20 LIMIT 10;
或者我可以做一些过滤 MATCH 可选关系的事情吗
START user=node:node_auto_index(uname="mike"),
posts=node:node_auto_index("postId:*")
MATCH user-[r?:LIKES]->posts
WHERE r IS NULL
RETURN posts SKIP 100 LIMIT 10;
控制台上的一些快速测试似乎显示第二种方法的性能更快。我是否正确假设第二个查询更快?而且,如果是这样,为什么?