您好,欢迎访问一九零五行业门户网

mysql-请教存储过程执行很慢,如何优化?

mysql优化存储过程
begin
declare personplaneid bigint;
declare starttime datetime; #开始时间
declare endtime datetime; #结束时间
declare sumstudytime int; #当前学时
declare targetstudytime int; #目标学时
declare id1_count bigint default 0; #t_stage_info 第一阶段count
declare id2_count bigint default 0; #t_stage_info 第二阶段count
declare id3_count bigint default 0; #t_stage_info 第三阶段count
declare firstendtime datetime; #第一阶段结束时间
declare secendtime datetime; #第二阶段结束时间
declare thirdendtime datetime; #第三阶段结束时间
declare done int default 0;
#声明光标 declare cur1 cursor for select p1.id, p1.start_learn_time start_time, p1.last_date end_time, p1.sum_study_time,p1.target_study_time from t_person_plan p1 left join t_person_plan_record p2 on p1.id = p2.person_plan_id where p1.license_type = 7 and p1.last_date 12 and sumstudytime14 then #如果thirdendtime为空则取最后学习的时间 set thirdendtime = case when thirdendtime is null then endtime else thirdendtime end; #更新第一阶段数据 if id1_count=0 then insert into t_stage_info(person_plan_id,start_time,end_time,sum_study_time,target_study_time,stage) values(personplaneid,starttime,firstendtime,sumstudytime,targetstudytime,1); else update t_stage_info set end_time=firstendtime,sum_study_time=sumstudytime where person_plan_id=personplaneid and stage=1; end if; #更新第二阶段数据 if id2_count=0 then insert into t_stage_info(person_plan_id,start_time,end_time,sum_study_time,target_study_time,stage) values(personplaneid,firstendtime,secendtime,sumstudytime,targetstudytime,2); else update t_stage_info set end_time=secendtime,sum_study_time=sumstudytime where person_plan_id=personplaneid and stage=2; end if; #更新第三阶段数据 if id3_count=0 then insert into t_stage_info(person_plan_id,start_time,end_time,sum_study_time,target_study_time,stage) values(personplaneid,secendtime,thirdendtime,sumstudytime,targetstudytime,3); else update t_stage_info set end_time=thirdendtime,sum_study_time=sumstudytime where person_plan_id=personplaneid and stage=3; end if; end if; end if; until done end repeat; close cur1;
end
现在执行了2小时才有了10几万数据,
我在t_person_plan_record 表里对‘person_plan_id ’建了索引,
在表t_stage_info 对person_plan_id ’建立了索引,其他我就不知道怎么优化了,
请问大神,还能怎么优化比较好呢?
其它类似信息

推荐信息