Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何优化neo4j查询。Neoj4显示了此警告:“您必须遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他有关法律法规。”;此查询在断开连接的模式之间构建笛卡尔积;_Neo4j - Fatal编程技术网

如何优化neo4j查询。Neoj4显示了此警告:“您必须遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他有关法律法规。”;此查询在断开连接的模式之间构建笛卡尔积;

如何优化neo4j查询。Neoj4显示了此警告:“您必须遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他有关法律法规。”;此查询在断开连接的模式之间构建笛卡尔积;,neo4j,Neo4j,我正在尝试运行此查询 MATCH (p:Post), (me:User{username: 'someUsername'}) WHERE ( ( (me)-[:user_posted_post|user_share_post|post_in_gr|post_in_page]-(p) OR ( (me)-[{subscribe: '1'}]-()-[:post_in_gr]-(p)

我正在尝试运行此查询

MATCH (p:Post), (me:User{username: 'someUsername'}) WHERE (
            (
              (me)-[:user_posted_post|user_share_post|post_in_gr|post_in_page]-(p) OR 
              (
                  (me)-[{subscribe: '1'}]-()-[:post_in_gr]-(p)-[:user_posted_post|user_share_post]-({status:'active'}) OR
                  (me)-[{subscribe: '1'}]-()-[:post_in_page]-(p)-[:user_posted_post|user_share_post]-({status:'active'}) OR
                  (me)-[:user_author_page]-()-[:post_in_page]-(p)-[:user_posted_post|user_share_post]-({status:'active'}) OR
                  (me)-[{subscribe: '1'}]-({status:'active'})-[:user_posted_post|user_share_post]-(p:Post{system_type: 'page'}) OR
                  (me)-[{subscribe: '1'}]-({status:'active'})-[:user_posted_post|user_share_post]-(p) AND NOT (p)-[:post_in_gr]-() AND NOT (p)-[:post_in_page]-() OR
                  (me)-[:user_create_com]-()-[:com_in_post]-(p)
              )
              AND p.access IN ['everybody', 'friend'] OR 
              (me)-[:user_can_see_post|user_posted_post]-(p) AND p.access = 'custom'
            ) 
          ) 
          AND p.hidden_id IS NULL AND NOT (me)-[:user_hide_post]-(p) RETURN p ORDER BY p.updated_at DESC

Neo4j说:“此查询在断开连接的模式之间构建笛卡尔乘积”,并且运行速度非常慢,大约8秒。这个警告是什么意思?我如何避免它并使它更快地工作

您正在构建一个
笛卡尔积
,因为这部分:
(p:Post),(me:User{username:'someUsername'})

这里您定义了一个不相交的模式:
(p:Post)
&
(me:User{username:'someUsername})
。因此DB必须在这两个不同的集合之间创建cartesain乘积

但我假设您对:User(username)有一个唯一的约束,所以笛卡尔函数实际上是1xN,所以它是sOK(Neo4j消息只是一个警告)

由于where子句复杂,查询速度较慢,其中包含大量的
。您可以尝试将其直接放在
匹配
部分或
可选匹配
中,而不是放在where子句中

此外,我认为您的查询可以被切割成多个简单的查询,您可以使用
联合
将它们连接起来


干杯

谢谢。我通过一个
联盟加入他们,现在它的工作速度快了5倍。但现在还有另一个麻烦。由于我使用的是Neo4j 2.3.2,因此无法对所有
UNION
查询的结果进行排序。