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