繁体   English   中英

Neo4j cypher查询性能低下

[英]Neo4j cypher query slow performance

我试图给出的例子在这里的一些小的修改后-主要是我添加了一个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.");
    }

您可能希望索引您的name属性(请参阅索引 )。 之后,您可以像这样查询:

START n=node:your_index_name("name:the_indexed_name") RETURN n;

通过索引查找节点比通过WHERE子句进行过滤要快得多。

我与Cypher查询技术有类似的问题。 处理Cypher声明性查询的开销导致性能不佳。 我同意你的看法,开销是不允许的。

我们应该使用Core Java API来获得neo4j的全部功能。

请参阅此文章: 使用Core Java API获取完整的neo4j功能

这就是: 图形查询语言的性能:在Neo4j中比较Cypher,Gremlin和Native Access

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM