select a.employeeid,
(select listagg(g.Email, ';') within group(order by e.CustomID)
from LCInsured e, LIInsContact f, LIBranchEmailSet g
where e.CustomID = f.CustomID
and e.EmployeeID = f.EmployeeID
and f.ContactNo = g.ContactNo
and f.Relation = '01'
and g.IsValid = '01'
AND g.emailstatus = '01'
and e.Relationship = '01'
--A and e.employeeid = a.employeeid
--A and e.grpcontno = a.grpcontno
--B and e.insuredid = (select insuredid from lcinsured where grpcontno = a.grpcontno and employeeid = a.employeeid and relationship='01')
)
FROM (select *
from (select a.*,
ROW_NUMBER() OVER(partition by a.customid order by a.expirydate desc) rn
from lcinsured a
where 1 = 1
and a.effectivedate <= a.expirydate
and a.grpcontno = 'MSH202006157963')
where rn = 1) a
left join LCGrpContRenewMiddleinsured b
on b.customid = a.customid
and b.employeeid = a.employeeid
join lcgrpplan c
on a.grpcontno = c.grpcontno
and a.grpplancode = c.grpplancode
order by a.insuredid
我不知道为什么. 反正结果是
A 11秒
B 1秒
虽然优化了 但不知道原因. 这个sql是取被保人的主被保人的邮箱地址.
这是一个关于SQL查询优化的问题,原始查询旨在从多个表中检索被保人的主被保人邮箱地址。经过优化后,查询性能显著提升,A部分执行时间为11秒,B部分则缩短到1秒。查询涉及LCInsured, LIInsContact, LIBranchEmailSet等多个表的连接操作,并使用了窗口函数ROW_NUMBER()进行数据筛选。

被折叠的 条评论
为什么被折叠?



