首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >服务器端分页可能吗?

服务器端分页可能吗?
EN

Stack Overflow用户
提问于 2013-08-26 02:35:43
回答 1查看 435关注 0票数 3

在Java应用程序中,我使用Spring通过REST绑定访问Neo4j数据库。

用作上下文的spring.xml包含以下行:

代码语言:javascript
运行
复制
<neo4j:config graphDatabaseService="graphDatabaseService" />
<neo4j:repositories base-package="org.example.graph.repositories"/>

<bean id="graphDatabaseService"
    class="org.springframework.data.neo4j.rest.SpringRestGraphDatabase">
    <constructor-arg index="0" value="http://example.org:1234/db/data" />
</bean>

我的存储库非常简单:

代码语言:javascript
运行
复制
public interface FooRepository extends GraphRepository<Foo> {   
}

现在,我想遍历一些Foos:

代码语言:javascript
运行
复制
for (Foo foo : fooRepository.findAll(new PageRequest(0, 5))) //...

但是,这个请求的性能很糟糕:它需要超过400秒(!)来完成。

经过一些调试之后,我发现Spring生成了以下查询:

代码语言:javascript
运行
复制
START `foo`=node:__types__(className="org.example.Foo") RETURN `foo`

然后,看起来好像分页是在客户机上完成的,并且所有的Foo(超过100,000)都被传输到客户机。当使用web接口向Neo4j服务器发出上述查询时,大约需要60秒。但是,如果我手动添加一个“限制5",则执行时间将减少到0.5秒左右。

我做错了什么,使春天的数据不使用服务器端,赛弗分页?

根据程序设计模型

通过使用REST转发这些调用,在服务器端高效地执行遍历和查询等昂贵的操作。

或者这不包括分页吗?

在这种情况下我还有其他选择吗?

EN

Stack Overflow用户

回答已采纳

发布于 2013-08-26 15:53:52

您可以执行以下操作来处理此服务器端。

  1. 在存储库中提供自己的查询方法
  2. 密码查询应该使用顺序、跳过和限制,并将它们参数化,以便您可以在每页的基础上传递跳过值和限制值。

例如。

代码语言:javascript
运行
复制
start john=node:users("name:pangea")
match john-[:HAS_SEEN]-(movie)
return movie
order by movie.name? 
skip 20
limit 10
票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18435827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档