描述
记录一下最近修复有关分页查询SQL告警的bug,下面是告警信息:
com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor:[360] - optimize this sql to a count sql has exception, sql:"...
...
...
...
...
...
...
...
...
...", exception:
net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "(" "("
at line 40, column 22.
Was expecting one of:
"&"
"::"
";"
"<<"
">>"
"ASC"
"COLLATE"
"DESC"
"EMIT"
"NULLS"
"["
"^"
"|"
<EOF>
通过关键字寻找了到的解决问题的帖子,最后在业务逻辑中添加了一行代码把该问题解决。
Page<xxx> page = new Page<>(pageNo, pageSize);
page.setOptimizeCountSql(false);
经过
回顾一下该bug的解决历程:
第一阶段以为是SQL的问题,然后就疯狂的调整SQL一段时间之后问题并未得到解决。
第二阶段在第一阶段没有收获的时候就切换了思路,觉得可能不是SQL的问题,最后在帖子中寻找到了答案,问题得以解决。
总结
该bug产生的原因是mybatis-plus框架本身会在分页查询的时候做count优化,那么我们取消掉该举措就行。