MySQL报错:Out of sort memory, consider increasing server sort buffer size

发布时间:2024年01月09日

报错内容

### Error querying database.  Cause: java.sql.SQLException: Out of sort memory, consider increasing server sort buffer size
### The error may exist in class path resource [mapper/ProjectCaseReportMapper.xml]
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### SQL: select pcr.id, pcr.finally_report_id,pcr.username,pcr.project_name,pcr.tag_name,pcr.status,pcr.exe_time,pcr.create_time, sc.case_title as caseName, sc.case_type as caseType, sc.case_num as caseNum from project_case_report pcr left join script_case sc on pcr.case_id = sc.id WHERE  finally_report_id = 'df47149a698d4508b42593e778af8a08'  order by pcr.create_time desc  LIMIT 10

报错原因

在 order by 时 sort_buffer_size 超出MySQL默认大小
在这里插入图片描述
我的SQL会报这个错误是因为我的一个字段是json格式,而且它的内容大小比较大,导致查出了这个限制。出现这个问题的原因也通常是带有order by的语句中某个字段的数据量较大导致的,可以自行排查。

解决方法

网上有很多方法都是告诉我们如何修改这个限制值,具体修改它的方法自行查询吧,因为我不建议大家修改,出现这个问题说明我们的SQL不是很合适,应该想办法优化我们的SQL。下面是我的解决过程。

  1. 找到数据较大字段
  2. 优化SQL,初次 order by 查询时不查询该字段,先获取它的ID和其他信息
  3. 单独增加一个接口通过ID查询该字段

我将SQL重新编写,把导致问题的大字段放到单独的一个接口进行查询,这样可以加快首次 order by 查询接口的速度同时避免了不可预知的sort_buffer_size限制报错,也可以根据id快速查询大字段。

文章来源:https://blog.csdn.net/hhl18730252820/article/details/135477409
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。