SELECT a1.juanhao,a1.c1,a2.c2,a3.c3,a4.c4,a5.c5,a6.c6 FROM"+
"(select juanhao,COUNT(CASE WHEN zigao>="+zg1+" AND zigao<"+zg2+" THEN 1 END) AS c1 FROM juan_information FORCE INDEX(zg) GROUP BY juanhao) AS a1,"+
"(select juanhao,COUNT(CASE WHEN zigao>="+zg2+" AND zigao<"+zg3+" THEN 1 END) AS c2 FROM juan_information FORCE INDEX(zg) GROUP BY juanhao) AS a2,"+
"(select juanhao,COUNT(CASE WHEN zigao>="+zg3+" AND zigao<"+zg4+" THEN 1 END) AS c3 FROM juan_information FORCE INDEX(zg) GROUP BY juanhao) AS a3,"+
"(select juanhao,COUNT(CASE WHEN zigao>="+zg4+" AND zigao<"+zg5+" THEN 1 END) AS c4 FROM juan_information FORCE INDEX(zg) GROUP BY juanhao) AS a4,"+
"(select juanhao,COUNT(CASE WHEN zigao>="+zg5+" AND zigao<"+zg6+" THEN 1 END) AS c5 FROM juan_information FORCE INDEX(zg) GROUP BY juanhao) AS a5,"+
"(select juanhao,COUNT(CASE WHEN zigao>="+zg1+" AND zigao<"+zg6+" THEN 1 END) AS c6 FROM juan_information FORCE INDEX(zg) GROUP BY juanhao) AS a6 "+
"where a1.juanhao=a2.juanhao AND a2.juanhao=a3.juanhao AND a3.juanhao=a4.juanhao AND a4.juanhao=a5.juanhao AND a5.juanhao=a6.juanhao
用连接查询,leftjoin,如果条件允许,可考虑分表分库
首先分析为什么慢:1. 6个子查询,每个子查询都需要建立中间表;2,每个子查询都在做 group by, 重复;3 CASE WHEN 用不了索引,需要扫描所有列;
优化:CASE WHEN 逻辑合并,6个子查询合并为1个查询,做1次 group by,做 join,