繁体   English   中英

Neo4j慢密码查询

[英]Neo4j slow cypher query

我的密码查询有问题:

start mag=node(1387),f=node(53)
MATCH mag-[:MAGASINS]->t-[:CONTAINS_SF]->sf1-[:IN_FAMILLY]->f
WITH distinct t,f
MATCH t-[:CONTAINS_SF]->sf2-[:IN_FAMILLY]->f1
WITH f,f1,sf2,t
WHERE f<>f1
return sf2,count(distinct t) as count
order by count desc
limit 15

该查询实际上仅用70k个节点就花费了600ms,目标节点数为10M

my jvm args : -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -Xmx5020m
my dev laptop : core i7, ssd, 16go

您可以帮助我减少执行时间吗? 谢谢:)问候查尔斯。

我的neo4j版本:1.9.1 OS:Mac OS 10.8 JDK Orcacle 1.7

尝试此操作,以便模式匹配器可以将f <> f1比较拉入模式匹配。

start mag=node(1387),f=node(53)
MATCH mag-[:MAGASINS]->t-[:CONTAINS_SF]->sf1-[:IN_FAMILLY]->f
WITH distinct t,f
MATCH t-[:CONTAINS_SF]->sf2-[:IN_FAMILLY]->f1
WHERE f<>f1
return sf2,count(distinct t) as count
order by count desc
limit 15

分析( profile start ... )会返回什么查询?

  • 是第一次运行还是随后的运行?
  • 确保在生产环境中运行时使用参数

您是否尝试过索引某些属性? 索引有助于优化查找特定节点的过程。 为此的命令是:

CREATE INDEX ON :Venue(name)

为了确保所有国家/地区名称都是唯一的,我们可以添加唯一性约束:

CREATE CONSTRAINT ON (c:Country) ASSERT c.name IS UNIQUE

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM