为了账号安全,请及时绑定邮箱和手机立即绑定

在几秒钟内从 Spring MVC 中的表中获取 400K 数据

在几秒钟内从 Spring MVC 中的表中获取 400K 数据

眼眸繁星 2022-07-20 20:55:18
我正在使用 Spring MVC,我需要获得的不仅仅是400k datas我在 mysql 查询中使用 JOIN 的表。我实际上拥有的是一个控制器,它返回包含一个列表。我使用 AJAX 调用控制器。我的解决方案的问题是我无法在几秒钟内获取 List 的数据,在 JSP 页面上加载需要超过 5 分钟。在页面 Jquery..$(document).ready(function ajaxPost() {  $.ajax({      type: "GET",  data: page,      url: "allListAjax",      success: function(list) {        //here i get responce list and page which takes 5 minutes  }//success }//ajax}//ready在控制器中..@RequestMapping(value="/allListAjax")public @ResponseBody IVRRouteReportWrapper dashoardAjax(Model model, @RequestParam(required = false) Integer page) {    IVRRouteReportWrapper wrappObj= new IVRRouteReportWrapper();    List<IVRRouteReport> list = ivrRouteServiceInterface.getAllIVRRouteReport(page);wrappObj.setIVRouteReportList(list);    wrappObj.setPage(page);return wrappObj;}这里,IVRRouteReportWrapper是一个域模型,其中包含 List 和 page 的 setter 和 getter。在服务实施中... public List<IVRRouteReport> getAllIVRRouteReport(Integer page) {      return ivrRouteDAOInterface.getAllIVRRouteReport(page);    }在道实现中...public List<IVRRouteReport> getAllIVRRouteReport(Integer page) {if(page==null) {    page = 0;}else {    page = page*200;}String strqry= "SELECT c.caller_id_number as caller_id_number, c.destination_number as destination_number,"        +" c.created_time as created_time, vbDtmf.digit as dtmf FROM VoiceBroadcastDTMF vbDtmf "        +"LEFT JOIN cdr c ON vbDtmf.uuid=c.orig_id ORDER BY c.created_time DESC";Query query = getSession().createSQLQuery(strqry)              .addScalar("caller_id_number", new StringType())              .addScalar("destination_number", new StringType())              .addScalar("created_time", new StringType())              .addScalar("dtmf", new StringType())              .setResultTransformer(Transformers.aliasToBean(IVRRouteReport.class))              .setFirstResult(page)              .setMaxResults(200); List<IVRRouteReport> ivrRouteReportList =(List<IVRRouteReport>) query.getResultList(); getSession().flush(); return ivrRouteReportList; }有没有办法在 jsp 页面上快速返回这个列表?提前致谢。
查看完整描述

2 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

索引“created_time”列,并通过仅指定查询中的必填字段来省略不需要的字段,如下所示

String strqry= "SELECT c.caller_id_number as caller_id_number, c.destination_number as destination_number,"
    +" c.created_time as created_time, vbDtmf.digit as dtmf FROM VoiceBroadcastDTMF vbDtmf "
    +"LEFT JOIN (SELECT caller_id_number , destination_number , created_time FROM cdr) as c ON vbDtmf.uuid=c.orig_id ORDER BY c.created_time DESC";


查看完整回答
反对 回复 2022-07-20
?
侃侃无极

TA贡献2051条经验 获得超10个赞

去分页。

参考spring-mvc-pagination


查看完整回答
反对 回复 2022-07-20
  • 2 回答
  • 0 关注
  • 111 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号