【发布时间】:2015-03-29 05:07:51
【问题描述】:
我有一个包含所有国家/地区的完整数据库(按国家/地区聚类的图表),并且我有各种包含完全相同架构但仅针对一个给定国家/地区的单一国家/地区测试数据库。
我的查询的“开始”节点,是通过匹配某个属性的给定值来识别的,例如
match (country:Country{name:"UK"})
然后进入由变量 country 定义的主查询。因此,鉴于我们从同一个已知节点开始,并且它将遍历两个数据库中与它相关的相同数量的节点,因此我期望查询时间相似。
但是,如果我在完整数据库或仅在一个国家/地区运行查询,我的查询会获得非常不同的性能。
我立即认为我一定遇到了某种“笛卡尔关系”问题,因此我在完整数据库和单个国家/地区数据库中分析了查询,但计划中的每个步骤的配置文件完全相同。我假设配置文件会在计划的某个时间点显示 db hits 显着增加,但值是相同的。显示的个人资料有误吗?
一些尺码: fullDB 有 70k 个节点,test DB 有 672 个节点,full db 中完成查询的时间是 218764ms,而 test db 大约是 3407ms。
在撰写本文时,我意识到某些节点上的传出关系数量将会增加(供应商可以提供不同的国家/地区),我认为这可能是原因,但问题仍然是为什么我没有看到任何在配置文件中表明这一点。
欢迎任何想法。
【问题讨论】: