数据多,查数据卡死(急急急)

查询数据8000条,直接卡死了

public List<Trafficsite> getByLg(String lgCode){
        return dataManager.load(Trafficsite.class)
                .query("select e from base_Trafficsite e " +
                        "where e.fdLg.fdCode = :lgCode " +
                        "and e.fdDel = :fdDel")
                .parameter("lgCode", lgCode)
                .parameter("fdDel", DelFlagEnum.NORMAL)
                .list();
    }

这里用到了join表,看看日志输出的原生sql。使用原生sql在数据库查询试试有性能问题吗?

也很慢啊,我试了fisrt和max分页一次200条感觉都很慢,export插件导出所有数据我看速度还可以啊

如果原生sql在数据库查询就很慢,那需要优化数据库。export全导出是没有where条件的,所以快。

看看sql的执行计划,是不是没有用到索引。

这种就是原生的sql吧?

entityManager.createNativeQuery("select * from ITD_TRAFFICSITE e where e.FD_DEL=0 AND e.FD_LG='zh-cn'", Trafficsite.class).getResultList();

2023-08-28 15:38:40.521 DEBUG 36064 — [nio-8080-exec-1] i.j.e.impl.JmixEclipseLinkQuery : select * from ITD_TRAFFICSITE e where e.FD_DEL=0 AND e.FD_LG=‘zh-cn’

找到原因了,是因为many to one 配置没有配置 @ManyToOne(fetch = FetchType.LAZY, optional = false)
默认是Egger导致的

2 个赞