私はNeo4jにかなり慣れていません。ExecutionResultの結果セットを反復処理しようとすると、特有のエラーが発生します。次のコードスニペットでは、最後のres.hasNext()が最後の反復に戻るまでに50秒近くかかります。
私が使用しているcypherクエリは
start p=node(*) where (p.`process-workflowID`? = '" + Id + "') and (p.type? = 'process') return ID(p);
私はneo4j-community-1.8.1とjava1.6.0_41を使用しており、226710ノードのDBに対してテストしています。
なぜこれが起こっているのかについて誰かが何か手がかりを持っていますか?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);
}