求sql高手优化一条语句
select (count(*)+1) as pmNum
from (select ts.userId,sum(ts.literAvg*ts.dist)/sum(ts.dist+0) as pmLiterAvg
from t_data ts group by userId having pmLiterAvg > 1 order by pmLiterAvg asc ) pm
where pm.pmLiterAvg <
(select sum(literAvg*dist)/sum(dist+0) from t_data where userId =123 and literAvg>0 and dist>1)
执行计划
id select_type table type rows Extra
1 PRIMARY <derived2> ALL 61 Using where
3 SUBQUERY t_data ALL 401 Using where
2 DERIVED ts ALL 401 Using temporary; Using filesort
表数据在十万级别