Sql 需要花费太多时间的新的JPQL请求

Sql 需要花费太多时间的新的JPQL请求,sql,jpa,jpql,Sql,Jpa,Jpql,我使用java和hibernate。我尝试在JPQL中实现该请求,但与在相同条件下在纯SQL中发出的类似请求相比,运行该请求确实花费了太多时间(我甚至不得不在延迟5分钟后停止该程序) select NEW package.CustomObject(co.num, item, dim, mat, pro) from Object1 co LEFT JOIN co.items item LEFT JOIN item.dim dim LEFT JOIN item.mat mat LEFT JOIN i

我使用java和hibernate。我尝试在JPQL中实现该请求,但与在相同条件下在纯SQL中发出的类似请求相比,运行该请求确实花费了太多时间(我甚至不得不在延迟5分钟后停止该程序)

select NEW package.CustomObject(co.num, item, dim, mat, pro) from Object1 co LEFT JOIN co.items item LEFT JOIN item.dim dim LEFT JOIN item.mat mat LEFT JOIN item.pro pro
           where co.ins between '2018-12-26 01:00:00' and '2019-06-26 01:00:00' 
               or co.mod between '2018-12-26 01:00:00' and '2019-06-26 01:00:00'.
CustomObject如下所示

public class CustomObject {

    private String num;

    private OtherCustomObject other;

    public CustomObject(String num, ItemObject item, DimObject dim, MatObject mat, ProObject pro) {
        this.num = num;
        this.other = new OtherCustomObject(item, dim, mat, pro);
    }
}

下面是在纯SQL中发出的类似请求

select  co.num
from    table1    co  left join ItemTable item on item.ou = co.ou left join DimTable dim on dim.item_id = item.id left join MatTable mat on mat.item_id = item.id left join ProTable pro on pro.item_id = item.id 
where   co.ins   between '2018-12-26 01:00:00' and '2019-06-26 01:00:00'
    or  co.mod   between '2018-12-26 01:00:00' and '2019-06-26 01:00:00';

这个请求几乎是即时的。那么我的JPQL请求有什么问题吗?

原因是要收集的数据太多了。当我运行以下请求时

select co.num from Object1 co LEFT JOIN co.items item LEFT JOIN item.dim dim LEFT JOIN item.mat mat LEFT JOIN item.pro pro
           where co.ins between '2018-12-26 01:00:00' and '2019-06-26 01:00:00' 
               or co.mod between '2018-12-26 01:00:00' and '2019-06-26 01:00:00'.

我有105000个结果。因此,服务器缺少内存来渲染其他对象并创建CustomObject

数据库是什么?你能分享你的代码吗?您是否使用了
setParameter
或使用硬编码参数创建JPQL?在执行JPQL查询时是否生成了另一个SQL?
select co.num from Object1 co LEFT JOIN co.items item LEFT JOIN item.dim dim LEFT JOIN item.mat mat LEFT JOIN item.pro pro
           where co.ins between '2018-12-26 01:00:00' and '2019-06-26 01:00:00' 
               or co.mod between '2018-12-26 01:00:00' and '2019-06-26 01:00:00'.