我尝试了这里提供的示例,经过一些小的修改(主要是添加了一个没有匹配条件的where子句),以进行实验。 在我的系统上(1.9.M04 - java 6u43 - ubuntu 12.04 - AMD phenom II -X6 1090T),这个简单查询只有1个节点在数据库中(也嵌入其中)花费了262毫秒。 显然出现了问题。 可能是什么问题呢?谢谢。
public void test()
{
GraphDatabaseService db = g = new GraphDatabaseFactory().newEmbeddedDatabase("./neo4j1test" );
long id;
Transaction tx = db.beginTx();
try
{
Node refNode = db.createNode();
id = refNode.getId();
refNode.setProperty( "name", "reference node" );
tx.success();
}
finally
{
tx.finish();
}
ExecutionEngine engine = new ExecutionEngine( db );
ExecutionResult result = engine.execute( "start n=node("+id+") where ( n.name = \"reference node\") return n.name" );
long time = System.currentTimeMillis();
result = engine.execute( "start n=node("+id+") where ( n.name = \"reference node\") return n.name" );
time = (System.currentTimeMillis() - time);
System.out.println("Time taken : " + time + " ms.");
}
start n=node(*) return count(n);start r=rel(*) return count(r)
。其次,如何测量时间?是Cypher输出给出的时间还是特定代码行之前和之后的时间?在第二种情况下,延迟可能存在于您的应用程序和服务器之间。 - ulkasExecutionEngine engine = new ExecutionEngine( db );
,因为它是可重用且一次性昂贵的操作。 - Peter Neubauer