复杂分页查询的Neo4j Cypher优化



我有一个相当长且复杂的分页查询。我正在尝试优化它。在最坏的情况下,首先,我必须在对Neo4j的一次调用中执行数据查询,然后我必须对计数执行几乎相同的查询。当然,我在一笔交易中做所有事情。无论如何,我不喜欢总的执行时间,所以我提取了两者最常见的部分——数据和计数查询,并在第一次调用时执行它。这个常见的查询返回节点的ID,然后我将其作为参数传递给其余的数据和计数查询。现在,一切都快多了。我不喜欢的一件事是,一个常见的查询有时会返回相当大的ID集。。它可以是CCD_ 1 CCD_。

因此,我的问题是——因为我在一个事务中这样做——有没有一种方法可以在常见查询和数据/计数查询调用之间的Neo4j中的某个位置保留ID的Set,并在随后的数据/计数请求中以某种方式引用它们,而不在应用JVM和Neo4j之间移动?

另外,我这么做是疯了吗?还是这是优化复杂分页查询的好方法?

仅使用自定义过程。否则你就需要退货。

但通常情况下,既提供计数(即使谷歌也不提供"真实"计数(又提供数据的情况并不常见。

一种方法是,只要用户滚动,就使用反应驱动程序流式传输结果。

否则,我将只查询pageSize+1并返回"0";大于pageSize结果";。

如果您只是流式传输id(而不是将其作为聚合进行收集(,则可以开始使用已经接收到的id来发出新的查询(即使是并行的(。

最新更新