+ -
当前位置:首页 → 问答吧 → 如何优化以下SQL语句

如何优化以下SQL语句

时间:2011-08-04

来源:互联网

select distinct x.Code,(select count(weight) from persont where weight>=0 and weight<=20 and ( x.code=compose or x.Code=compose2 or x.Code=compose3 or x.Code=compose4) ) as weight1,
  (select count(weight) from persont where weight>=21 and weight<=40 and ( x.code=compose or x.Code=compose2 or x.Code=compose3 or x.Code=compose4)) as weight2,
  (select count(weight) from persont where weight>=41 and weight<=60 and ( x.code=compose or x.Code=compose2 or x.Code=compose3 or x.Code=compose4)) as weight3,
  (select count(weight) from persont where weight>=61 and weight<=80 and ( x.code=compose or x.Code=compose2 or x.Code=compose3 or x.Code=compose4)) as weight4,
  (select count(weight) from persont where weight>=81 and weight<=100 and ( x.code=compose or x.Code=compose2 or x.Code=compose3 or x.Code=compose4)) as weight5,
  (select count(weight) from persont where weight>=101 and weight<=120 and ( x.code=compose or x.Code=compose2 or x.Code=compose3 or x.Code=compose4)) as weight6,
  (select count(weight) from persont where weight>=121 and weight<=140 and ( x.code=compose or x.Code=compose2 or x.Code=compose3 or x.Code=compose4)) as weight7,
  (select count(weight) from persont where weight>=141 and weight<=160 and ( x.code=compose or x.Code=compose2 or x.Code=compose3 or x.Code=compose4)) as weight8,
  (select count(weight) from persont where weight>=161 and ( x.code=compose or x.Code=compose2 or x.Code=compose3 or x.Code=compose4)) as weight9,
(select count(weight) from persont where ( x.code=compose or x.Code=compose2 or x.Code=compose3 or x.Code=compose4) ) as total
  from x_compose x left join persont p on ( x.code=p.compose or x.Code=p.compose2 or x.Code=p.compose3 or x.Code=p.compose4)
  where x.class=1
  group by x.code ;



当数据达到10000条以上的时候执行查询非常慢,请高手指教!

作者: typ668   发布时间: 2011-08-04

索引情况如何

作者: wwwwb   发布时间: 2011-08-04

两个表都建了索引

作者: typ668   发布时间: 2011-08-04

(select count(weight) from persont where weight>=0 and weight<=20 and ( x.code=compose or x.Code=compose2 or x.Code=compose3 or x.Code=compose4) ) as weight1,->
sum(if(p.weight>=0 and p.weight<=20,1,0))
看看结果是否正确

作者: wwwwb   发布时间: 2011-08-04