Loop1 は、いくつかの簡単なロジックによって導出されます。Loop2 は、非常に複雑なロジックによって導出されます。Loop3は非常に単純で、Loop2に2を追加するだけで導出されます
ここで、Loop1、Loop2、Loop3 を組み合わせて Loop4 を導き出します。問題は、ループ 2 が非常に重いロジックであり、ループ 3 内でロジックを再度導出すると、クエリの実行が非常に遅くなることです。より明確にするために、loop1&2 を使用して loop3 を見つけ、loop1,2&3 を使用して loop4 を見つけています。このクエリを機能させる方法を提案してください。
select sre.shipmentId,
loop1.TRY1,
loop2.TRY2,
loop3.TRY3,
(select case when u>0 then loop1.TRY1 when u>1 then loop2.TRY2 else loop3.TRY3 end) as loop4
from `shipmentRouteEvent` sre
left join (select sre1.shipmentId as s1, (case when .....>0 then .... end) ad TRY1
from `shipmentRouteEvent` sre1
where sre1.updateDate='2013-07-01'
) as loop1 on sre.id=try1.id
left join (select some heavy logic which will modify TRY1 to TRY2) as loop2
left join (select (TRY2+2) as TRY3) as loop3
where sre.updateDate='2013-07-01'