使用就是官网的docker镜像
vesoft/nebula-graphd:v2.0.0
运行环境Ubuntu
Linux DESKTOP-CBS9UO5 5.4.72-microsoft-standard-WSL2 #1 SMP Wed Oct 28 23:40:43 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
硬件
512G的SSD硬盘: WDC PC SN730 SDBQNTY-512G-1001
CPU i5-i0210U 1.6G 4核8线程
内存16G
这个场景
CREATE TAG organization(name string);
CREATE EDGE HAS_CHILD();
建立5个orga的点;每个点下建了10W个orgb的点,并通过HAS_CHILD边关联【总计50万条边】
如下这种方法查询怎么这么慢,应该建索引吗? 指定VID应该不用吧?
查询的例子类似如下,实际场景需要建个多层的组织树,这个查询性能太慢了
MATCH p=(orga:organization) -[:HAS_CHILD*1]-> (orgb:organization) WHERE id(orga) == '100' and id(orgb)=='199999' RETURN p
MATCH p=(orga:organization) -[:HAS_CHILD*1]-> (orgb:organization) WHERE id(orga) == '100' and orgb.name=='organization199999' RETURN p
<("100" :organization{name: "organization100"})-[:HAS_CHILD@0 {}]->("199999" :organization{name: "organization199999"})> |
Got 1 rows (time spent 10606048/10607336 us)
反过来查速度超级快
MATCH p=(orga:organization) -[:HAS_CHILD*1]-> (orgb:organization) WHERE id(orgb)=='199999' RETURN p
Got 1 rows (time spent 19348/19737 us)
Nebula查询需要哪些注意的点,有否参考的地方,使用explain 好像也看不出啥原因?