在调试一个复杂的导出时,又出现了Communications link failure的错误,第一反应就是sql执行时间太长超过了druid设置的maxwait(获取毗连期待超时时间)。
分析sql,执行 explain 你的sql 。id为执行优先级,数值一样则从上到下执行。其他参数我就不表明白,网上都有(搜索explain各个参数的意义),主要看table(表别名)、type(扫描类型,不要看到all就觉得很影响性能,其实表小的话不走索引反而更快)、row(预估扫描条数,假如数量很大,那你的sql就必要优化了)、extra(一样平常是看排序请客,尽量让Using index出现多点)。
假如条件答应,我建议把所有毗连条件中的字段(一样平常是id为主)和order by 、 group by后面的字段都加索引