这段怎么优化,
现在执行时间太长,导致出不来结果
###### 问题相关代码,请勿粘贴截图
```sql
with RECURSIVE t as (
SELECT A.date 日期 , DATE_FORMAT(DATE_ADD(A.date,interval 1 day) ,'%X-%V') WEEK ,A.product 产品名称,SUM(A.changeNum) 数量 ,SUM(changeWeight) 重量,A.project 项目名称,B.F0000012 日租金,C.managePer 费用率,
(select SUM(changeNum) FROM (
select date,product,changeNum,changeWeight,project from i_d1508216a9a711699b84408b6ca9ca39406fa53 a
left join i_d1508219e8f0d5ab2514476aba5bfc17053487b b on b.F0000006=a.project where b.jieSuanType='算头算尾' union all
select date,product,changeNum,changeWeight,project from i_d150821Sjsqyi2kp3g0n0znoecylig8e3 a
left join i_d1508219e8f0d5ab2514476aba5bfc17053487b b on b.F0000006=a.project where b.jieSuanType='算头不算尾' union all
select date,product,changeNum,changeWeight,project from i_d150821Splir321ozsbqbufdu5rqlni92 a
left join i_d1508219e8f0d5ab2514476aba5bfc17053487b b on b.F0000006=a.project where b.jieSuanType='不算头算尾' union all
select date,product,changeNum,changeWeight,project from i_d150821Sdl1mkv0akog7787zwwb53wia6 a
left join i_d1508219e8f0d5ab2514476aba5bfc17053487b b on b.F0000006=a.project where b.jieSuanType='不算头不算尾'
) w
where product =A.product and project =A.project AND (date IS NULL OR date <=A.date ))AS 结存
,CASE WHEN B.chargeType='根计' THEN B.F0000012*(select SUM(changeNum) FROM (
select date,product,changeNum,changeWeight,project from i_d1508216a9a711699b84408b6ca9ca39406fa53 a
left join i_d1508219e8f0d5ab2514476aba5bfc17053487b b on b.F0000006=a.project where b.jieSuanType='算头算尾' union all
select date,product,changeNum,changeWeight,project from i_d150821Sjsqyi2kp3g0n0znoecylig8e3 a
left join i_d1508219e8f0d5ab2514476aba5bfc17053487b b on b.F0000006=a.project where b.jieSuanType='算头不算尾' union all
select date,product,changeNum,changeWeight,project from i_d150821Splir321ozsbqbufdu5rqlni92 a
left join i_d1508219e8f0d5ab2514476aba5bfc17053487b b on b.F0000006=a.project where b.jieSuanType='不算头算尾' union all
select date,product,changeNum,changeWeight,project from i_d150821Sdl1mkv0akog7787zwwb53wia6 a
left join i_d1508219e8f0d5ab2514476aba5bfc17053487b b on b.F0000006=a.project where b.jieSuanType='不算头不算尾'
) t
where product =A.product and project =A.project AND (date IS NULL OR date <=A.date ))ELSE
B.F0000012*B.peiZhong/1000*(select SUM(changeNum) FROM (
select date,product,changeNum,changeWeight,project from i_d1508216a9a711699b84408b6ca9ca39406fa53 a
left join i_d1508219e8f0d5ab2514476aba5bfc17053487b b on b.F0000006=a.project where b.jieSuanType='算头算尾' union all
select date,product,changeNum,changeWeight,project from i_d150821Sjsqyi2kp3g0n0znoecylig8e3 a
left join i_d1508219e8f0d5ab2514476aba5bfc17053487b b on b.F0000006=a.project where b.jieSuanType='算头不算尾' union all
select date,product,changeNum,changeWeight,project from i_d150821Splir321ozsbqbufdu5rqlni92 a
left join i_d1508219e8f0d5ab2514476aba5bfc17053487b b on b.F0000006=a.project where b.jieSuanType='不算头算尾' union all
select date,product,changeNum,changeWeight,project from i_d150821Sdl1mkv0akog7787zwwb53wia6 a
left join i_d1508219e8f0d5ab2514476aba5bfc17053487b b on b.F0000006=a.project where b.jieSuanType='不算头不算尾'
) P
where product =A.product and project =A.project AND (date IS NULL OR date <=A.date ))END 租金,
ROUND(CASE WHEN B.chargeType='根计' THEN B.F0000012*(select SUM(changeNum) FROM (
select date,product,changeNum,changeWeight,project from i_d1508216a9a711699b84408b6ca9ca39406fa53 a
left join i_d1508219e8f0d5ab2514476aba5bfc17053487b b on b.F0000006=a.project where b.jieSuanType='算头算尾' union all
select date,product,changeNum,changeWeight,project from i_d150821Sjsqyi2kp3g0n0znoecylig8e3 a
left join i_d1508219e8f0d5ab2514476aba5bfc17053487b b on b.F0000006=a.project where b.jieSuanType='算头不算尾' union all
select date,product,changeNum,changeWeight,project from i_d150821Splir321ozsbqbufdu5rqlni92 a
left join i_d1508219e8f0d5ab2514476aba5bfc17053487b b on b.F0000006=a.project where b.jieSuanType='不算头算尾' union all
select date,product,changeNum,changeWeight,project from i_d150821Sdl1mkv0akog7787zwwb53wia6 a
left join i_d1508219e8f0d5ab2514476aba5bfc17053487b b on b.F0000006=a.project where b.jieSuanType='不算头不算尾'
) t
where product =A.product and project =A.project AND (date IS NULL OR date <=A.date ))ELSE
B.F0000012*B.peiZhong/1000*(select SUM(changeNum) FROM (
select date,product,changeNum,changeWeight,project from i_d1508216a9a711699b84408b6ca9ca39406fa53 a
left join i_d1508219e8f0d5ab2514476aba5bfc17053487b b on b.F0000006=a.project where b.jieSuanType='算头算尾' union all
select date,product,changeNum,changeWeight,project from i_d150821Sjsqyi2kp3g0n0znoecylig8e3 a
left join i_d1508219e8f0d5ab2514476aba5bfc17053487b b on b.F0000006=a.project where b.jieSuanType='算头不算尾' union all
select date,product,changeNum,changeWeight,project from i_d150821Splir321ozsbqbufdu5rqlni92 a
left join i_d1508219e8f0d5ab2514476aba5bfc17053487b b on b.F0000006=a.project where b.jieSuanType='不算头算尾' union all
select date,product,changeNum,changeWeight,project from i_d150821Sdl1mkv0akog7787zwwb53wia6 a
left join i_d1508219e8f0d5ab2514476aba5bfc17053487b b on b.F0000006=a.project where b.jieSuanType='不算头不算尾'
) P
where product =A.product and project =A.project AND (date IS NULL OR date <=A.date ))END /1.13,2) 不含税金额,
C.managePer*CASE WHEN B.chargeType='根计' THEN B.F0000012*(select SUM(changeNum) FROM (
select date,product,changeNum,changeWeight,project from i_d1508216a9a711699b84408b6ca9ca39406fa53 a
left join i_d1508219e8f0d5ab2514476aba5bfc17053487b b on b.F0000006=a.project where b.jieSuanType='算头算尾' union all
select date,product,changeNum,changeWeight,project from i_d150821Sjsqyi2kp3g0n0znoecylig8e3 a
left join i_d1508219e8f0d5ab2514476aba5bfc17053487b b on b.F0000006=a.project where b.jieSuanType='算头不算尾' union all
select date,product,changeNum,changeWeight,project from i_d150821Splir321ozsbqbufdu5rqlni92 a
left join i_d1508219e8f0d5ab2514476aba5bfc17053487b b on b.F0000006=a.project where b.jieSuanType='不算头算尾' union all
select date,product,changeNum,changeWeight,project from i_d150821Sdl1mkv0akog7787zwwb53wia6 a
left join i_d1508219e8f0d5ab2514476aba5bfc17053487b b on b.F0000006=a.project where b.jieSuanType='不算头不算尾'
) t
where product =A.product and project =A.project AND (date IS NULL OR date <=A.date ))ELSE
B.F0000012*B.peiZhong/1000*(select SUM(changeNum) FROM (
select date,product,changeNum,changeWeight,project from i_d1508216a9a711699b84408b6ca9ca39406fa53 a
left join i_d1508219e8f0d5ab2514476aba5bfc17053487b b on b.F0000006=a.project where b.jieSuanType='算头算尾' union all
select date,product,changeNum,changeWeight,project from i_d150821Sjsqyi2kp3g0n0znoecylig8e3 a
left join i_d1508219e8f0d5ab2514476aba5bfc17053487b b on b.F0000006=a.project where b.jieSuanType='算头不算尾' union all
select date,product,changeNum,changeWeight,project from i_d150821Splir321ozsbqbufdu5rqlni92 a
left join i_d1508219e8f0d5ab2514476aba5bfc17053487b b on b.F0000006=a.project where b.jieSuanType='不算头算尾' union all
select date,product,changeNum,changeWeight,project from i_d150821Sdl1mkv0akog7787zwwb53wia6 a
left join i_d1508219e8f0d5ab2514476aba5bfc17053487b b on b.F0000006=a.project where b.jieSuanType='不算头不算尾'
) P
where product =A.product and project =A.project AND (date IS NULL OR date <=A.date ))END 服务费
from (
select date,product,changeNum,changeWeight,project from i_d1508216a9a711699b84408b6ca9ca39406fa53 a
left join i_d1508219e8f0d5ab2514476aba5bfc17053487b b on b.F0000006=a.project where b.jieSuanType='算头算尾' union all
select date,product,changeNum,changeWeight,project from i_d150821Sjsqyi2kp3g0n0znoecylig8e3 a
left join i_d1508219e8f0d5ab2514476aba5bfc17053487b b on b.F0000006=a.project where b.jieSuanType='算头不算尾' union all
select date,product,changeNum,changeWeight,project from i_d150821Splir321ozsbqbufdu5rqlni92 a
left join i_d1508219e8f0d5ab2514476aba5bfc17053487b b on b.F0000006=a.project where b.jieSuanType='不算头算尾' union all
select date,product,changeNum,changeWeight,project from i_d150821Sdl1mkv0akog7787zwwb53wia6 a
left join i_d1508219e8f0d5ab2514476aba5bfc17053487b b on b.F0000006=a.project where b.jieSuanType='不算头不算尾'
) A
LEFT JOIN i_D150821F4955743e840b409c970fa4d7b91e7628 B ON B.F0000009=A.product and B.F0000061=A.project
LEFT JOIN i_D1508219e8f0d5ab2514476aba5bfc17053487b C ON C.F0000006=A.project
GROUP BY A.date ,A.product,A.project,B.F0000012
) ,
x as(
select t.*,row_number() over(partition by 项目名称,产品名称 order by 日期) rn from t),
cte as (select 日期,WEEK,项目名称,产品名称,数量,结存,日租金,租金,不含税金额,服务费,费用率 from x where rn=1
union all
select DATE_ADD(cte.日期,INTERVAL 1 day),
DATE_FORMAT(DATE_ADD(cte.日期,interval 1 day) ,'%X-%V') WEEK
,cte.项目名称,cte.产品名称,
ifnull((select x.数量 from x where date_add(cte.日期,INTERVAL 1 day)=x.日期 and cte.项目名称=x.项目名称 and cte.产品名称=x.产品名称),0),
ifnull((select x.结存 from x where date_add(cte.日期,INTERVAL 1 day)=x.日期 and cte.项目名称=x.项目名称 and cte.产品名称=x.产品名称),cte.结存)
,日租金,
ifnull((select x.租金 from x where date_add(cte.日期,INTERVAL 1 day)=x.日期 and cte.项目名称=x.项目名称 and cte.产品名称=x.产品名称),cte.租金),
ifnull((select x.不含税金额 from x where date_add(cte.日期,INTERVAL 1 day)=x.日期 and cte.项目名称=x.项目名称 and cte.产品名称=x.产品名称),cte.不含税金额),
ifnull((select x.服务费 from x where date_add(cte.日期,INTERVAL 1 day)=x.日期 and cte.项目名称=x.项目名称 and cte.产品名称=x.产品名称),cte.服务费)
,费用率
from cte
LEFT JOIN I_D1508219e8f0d5ab2514476aba5bfc17053487b O ON O.F0000006=cte.项目名称
where date_add(cte.日期,INTERVAL 1 day)<=CASE WHEN O.F0000065 IS NULL THEN curdate() ELSE O.F0000065 END
)
select * from cte order by 日期 desc,项目名称,产品名称
Query execution was interrupted,maximum seatement execution time exceeded
运行时间限制默认为10秒。
可以用SET global max_execution_time = 30000;
修改运行时间限制为30秒再运行试试