【发布时间】:2016-01-06 14:56:37
【问题描述】:
我有一个使用 Ebean 和 H2 的 Play 应用程序(2.3.4 java)。
我有一张大表(500000 行),当我提出这个查询时,我在大约 20 秒后得到结果(2014 年的笔记本电脑不错)
return new Finder<>(Long.class, Event.class).where()
.where().eq("author.id", getId())
.orderBy("id desc")
.findPagingList(20)
.setFetchAhead(false)
.getPage(page);
这基本上意味着我想要表格的最后 20 行。如何提高性能?
【问题讨论】:
-
随便拍:如果你的模型包含很多关系可能会浪费时间去获取它们,尝试使用
select("...")和fetch("...")来限制获取的资源,同时为Ebean打开语句登录看看什么正是它在查询数据库期间所做的 -
@biesior 我尝试了选择和获取,但没有帮助。但只有当我删除行 '.orderBy("id desc")' 时,每件事都会很快!即使 '.orderBy("id asc")' 没有改变性能,......那么如何才能获得最新的 X 条目,并具有良好的性能?谢谢
-
@biesior 我提到的这些性能处于调试模式(不是生产)。你认为我会看到生产模式有很大的改进吗?
-
我不认为开发环境会减慢查询速度...通过 H2 控制台登录到您的数据库并在那里尝试此查询,同时检查字段是否被正确索引
标签: sql playframework playframework-2.0 h2 ebean