上周遇到一个SQL超时问题,多个JOIN,最后SUM求和,客户日志里有超时信息。
但是奇怪的是把日志里的超时单独拿出来放到SQL里执行,并没有超时,奇怪得很。
原因有很多,其中一种是“参数嗅探”,具体细节可以参考其他文章了解一二。
简单说下怎么优化的,分两个方向:
1、多表JOIN,改成先得到一张临时表,再通过临时表去JOIN余下的表
2、查询时带上日期范围,避免统计所有数据
优化后,暂时没有再看到这个地方的超时信息,说明有一定作用。在实际的开发过程中, 应当避免很多表JOIN,以及大表JOIN,优先对数据做过滤,再关联,必要时使用临时表。
标签:语句,JOIN,临时,SQL,日志,超时 From: https://www.cnblogs.com/sunshine-wy/p/18111739