【问题标题】:Good approach to handle get large dataset from database using jpa repository使用 jpa 存储库处理从数据库获取大型数据集的好方法
【发布时间】:2021-09-20 09:13:41
【问题描述】:

我说的是一次查询中有 400 万条数据

@RequestMapping(value = { "/getData" }, method = { RequestMethod.GET, RequestMethod.POST })
    public String getData (@RequestParam(value = "start", required = false, defaultValue = "0") String start,
            @RequestParam(value = "end", required = false, defaultValue = "0") String end, ModelMap model) {
        
        
            List<Object> getDataList = repo.getData(start, end);            
            model.addAttribute("getDataList ", getDataList);
            model.addAttribute("showDownload", true);
            model.addAttribute("start", start);
            model.addAttribute("end", end);
            
        
        return "getData";

    }

这种方法一次可以获取 220 万条数据。这段代码如何优化?

@Query(value = "SELECT * "
            + "FROM table where date between :start and :end", nativeQuery = true)
    List<Object> getData(@Param("start") String start, @Param("end") String end);
    

【问题讨论】:

  • 是否需要单次响应返回所有数据?
  • 针对什么进行了优化?
  • 获取100000条记录需要4分钟以上。

标签: spring spring-boot spring-mvc spring-data-jpa spring-data


【解决方案1】:

您可以使用Pagination

您的 API 和查询将更改以接受分页所需的一些必要信息。示例:

SELECT
    *
FROM
    table
ORDER BY Id
LIMIT 1000
OFFSET 0;

Reference

返回如此庞大的数据集作为响应可能不是一个好主意。 巨大的响应可能会导致网络问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-12
    • 2013-11-11
    • 2010-09-15
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多