为什么通过代码查询比 Neo4j 客户端慢 10 倍?

Why is a query 10 times slower through code as opposed to the Neo4j Client?

最近,我接到一项任务,即研究并提供 NoSQL 数据库效果的概念证明。我已选择 Neo4j 作为此 .NET 应用程序的 NoSQL 数据库。

事情是......当我使用 Neo4j 客户端执行查询时,它运行在 10-20 毫秒内,这太棒了。每当我通过代码执行该查询时,都需要 150-200 毫秒,这是巨大的差异。

查询如下(银行是数据库的荷兰语)

我想要实现的目标是让每个银行都有他们的Children(为了获得整个层次结构):

MATCH (bank:Bank)-[:PARENT_OF]->(bank2:Bank) Return (bank.id),collect(bank2.id)

这是我用来执行查询的代码。

var query = client.Cypher.Match("(bank:Bank)-[:PARENT_OF]->(child:Bank)")
            .Return((bank, child) => new
            {
                Bank = bank.As<Bank>(),
                Children = child.CollectAs<Bank>()
            });
        var list = query.Results

我的问题是:为什么通过代码查询比 Neo4j 客户端慢 10 倍?

我猜你是在与网页版进行比较?

使用客户端会产生很多开销 - 诸如 OGM(对象图映射)之类的东西会消耗一些性能,然后您必须添加诸如实际 HTTP 调用之类的开销。

Web 上的客户端 (localhost:7474) 不必与此抗衡。

您可能还会注意到 Web 客户端显示不同的内容 - API 而非 返回的内容。我想你会得到一张图表,显示 Bank 都以良好的关系连接在一起 - 如果你 运行 查询并查看 REST 响应 - 你会注意到没有关系数据在那里,所以它一定是在调用其他东西。

我知道这不是一个理想的答案:/