如何从Java代码中获取Cypher查询的db-hits总数?

时间:2015-05-26 13:21:18

标签: neo4j cypher sql-execution-plan

我正在尝试从Cypher查询中获取db-hits的总数。出于某种原因,我在调用时总是得到0:

String query = "PROFILE MATCH (a)-[r]-(b)-[p]-(c)-[q]-(a) RETURN a,b,c";
Result result = database.execute(query);
while (result.hasNext()) {
    result.next();
}
System.out.println(result.getExecutionPlanDescription().getProfilerStatistics().getDbHits());

数据库似乎还可以。达到这种价值的方式有什么不对吗?

1 个答案:

答案 0 :(得分:1)

ExecutionPlanDescription是树状结构。最有可能的是,top元素本身并不直接命中数据库,例如投影。

因此,您需要使用ExecutionPlanDescription.getChildren()编写递归函数来钻取查询计划的各个部分。例如。如果其中一个孩子(或子*孩子)是Expand类型的计划,则可以使用plan.getProfilerStatistics().getDbHits()