получить 400K данных из таблиц в Spring MVC в течение нескольких секунд - PullRequest
0 голосов
/ 07 марта 2019

Я использую Spring MVC, и мне нужно получить больше, чем 400k datas по моей таблице, где я также использую JOIN в запросе mysql.

На самом деле у меня есть контроллер, который возвращает, который содержит список,Я называю Контроллер используя 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 - это модель домена, которая содержит установщики и получатели списка и страницы.

В реализации службы...

 public List<IVRRouteReport> getAllIVRRouteReport(Integer page) {
      return ivrRouteDAOInterface.getAllIVRRouteReport(page);
    }

В реализации Dao ...

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 ]

0 голосов
/ 07 марта 2019

Индексируйте столбец «create_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";
0 голосов
/ 07 марта 2019

Перейти на нумерацию страниц.

См. spring-mvc-pagination

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...