[英]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.