SQL优化一例:通过改变分组条件(减少计算次数)来提高效率
#与各人授权日期相关,所以有十万用户,就有十万次查询(相关子查询)
@Run.ExecuteSql("更新各人应听正课数",@"
update bi_data.study_manual_{{课程id}} c join
(
select
a.user_id,
(
select count(*) from bi_data.dict_course_all d
where d.course_id={{课程id}}
and belong_date<='{{作业日期}}'
and d.belong_date>a.grant_course_date
) should_zhengke_count
from bi_data.study_manual_{{课程id}} a
) d on d.user_id=d.user_id
set
c.should_zhengke_count=d.should_zhengke_count
")
######
#与各人授权日期相关,因为课程只执行几十天,所以只有几十次查询。
@Run.ExecuteSql("更新各人应听正课数",@"
update bi_data.study_manual_{{课程id}} c join
(
select
a.grant_course_date,
(
select count(*) from bi_data.dict_course_all d
where d.course_id={{课程id}}
and belong_date<='{{作业日期}}'
and d.belong_date>a.grant_course_date
) should_zhengke_count
from (select distinct grant_course_date from bi_data.study_manual_{{课程id}}) a
) d on d.grant_course_date=d.grant_course_date
set
c.should_zhengke_count=d.should_zhengke_count
")
本文来自博客园,作者:xiaoyongdata(微信号:xiaoyongdata),转载请注明原文链接:https://www.cnblogs.com/xiaoyongdata/p/15725276.html