我对 Neo4j 相当陌生。尝试迭代 ExecutionResult 结果集时遇到一个特殊错误。在以下代码片段中,最后一个 res.hasNext() 需要近 50 秒才能在最后一次迭代中返回。
我正在使用的密码查询是
start p=node(*) where (p.`process-workflowID`? = '" + Id + "') and (p.type? = 'process') return ID(p);
我正在使用 neo4j-community-1.8.1 和 java 1.6.0_41,针对具有 226710 个节点的数据库进行测试。
有没有人知道为什么会这样?我假设查询在 engine.execute(query) 返回时完成,但如果不是这种情况,将不胜感激有人在查询实际完成时有所了解。先感谢您。
ExecutionResult result = engine.execute(query);
Iterator<Map<String, Object>> res = result.iterator();
while(res.hasNext()) {
Map<String, Object> row = res.next();
for(Entry<String, Object> column : row.entrySet()){
...
}
long t1 = System.currentTimeMillis();
res.hasNext(); // <--------------------------- statement in question
long t2 = System.currentTimeMillis();
System.out.println(t2-t1);
}