从页面和任务的真实需求出发

库存列表、批量任务和报表的查询目标并不相同。性能治理可以先回到业务:这次需要哪些字段、查询范围有多大、结果如何分页、关联数据是否真的用得上。把需求边界说清楚,再分析具体 SQL,会更容易找到值得调整的位置。

把一次请求里的查询放在一起看

除了单条 SQL 的耗时,还要检查调用链是否存在 N+1、循环查库或无界查询。列表中的逐行查询可能隐藏在服务方法里;批量任务也可能重复获取相同的数据。整理数据依赖后,用批量查询减少重复访问,并限制一次处理的数据范围。

联合索引与查询结构一起考虑

针对复杂查询,可以结合过滤条件、关联关系与排序方式检查联合索引,同时限定扫描范围、拆分无效关联。索引调整和 SQL 改写需要回到原来的业务场景验证,尤其留意结果集合、数量口径和边界数据是否一致。

一个便于复用的排查顺序

  • 定位具体页面、接口或批量任务。
  • 结合 SQL 与调用链寻找重复查询。
  • 检查扫描范围、关联关系和联合索引。
  • 比较调整前后的结果正确性和执行表现。