MySQL报错:Out of sort memory, consider increasing server sort buffer size
2024-01-09 13:33:21
报错内容
### 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。下面是我的解决过程。
- 找到数据较大字段
- 优化SQL,初次 order by 查询时不查询该字段,先获取它的ID和其他信息
- 单独增加一个接口通过ID查询该字段
我将SQL重新编写,把导致问题的大字段放到单独的一个接口进行查询,这样可以加快首次 order by 查询接口的速度同时避免了不可预知的sort_buffer_size限制报错,也可以根据id快速查询大字段。
文章来源:https://blog.csdn.net/hhl18730252820/article/details/135477409
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!