JPA优化查询性能

时间:2015-12-22 09:28:23

标签: java sql spring postgresql jpa

我的Spring应用程序中有一个查询,它连接了一个表和一个视图。两者之间的关系是1-0..1,选择发生在第一个表格上。

select *
from a
left join b on a.id = b.id

我正在执行我的查询:

List<Record> list = em.createNativeQuery(query, Record.class)
    .setFirstResult(offset)
    .setMaxResults(limit)
    .getResultList();

我猜想转换为:

select *
from a
left join b on a.id = b.id
where a.x = 1234
offset 100000
limit 1000

然而,这更快:

with t as (
    select *
    from a
    where x = 1234
    offset 100000
    limit 1000
)
select *
from t
left join b on t.id = b.id

我应该摆脱setFirstResultgetMaxResults,并自己构建查询吗?或者还有其他选择吗?

由于

0 个答案:

没有答案