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
")

 

posted @ 2021-12-23 21:07  xiaoyongdata  阅读(130)  评论(0编辑  收藏  举报