如何解决实现减查询逻辑的替代查询
我们正在使用下面提到的减查询逻辑来找出 2 个表之间不存在的记录,是否有可以通过 SQL 使用的替代逻辑来实现相同的结果,这会导致性能问题并运行一段时间很长一段时间。
isrunning
解决方法
您可以尝试使用外部联接:
SELECT EMPLID,EMPL_RCD,EFFDT,HR_STATUS,EMPL_STATUS
FROM EDWHRSTG.PS_JOB_FULL_S a
LEFT OUTER JOIN (SELECT EMPLID,EMPL_STATUS
FROM SUODS.PS_JOB_S
WHERE EMPLID = '09762931') b
ON b.EMPLID = a.EMPL_ID AND
b.EMPL_RCD = a.EMPL_RCD AND
b.EFFDT = a.EFFDT AND
b.HR_STATUS = a.HR_STATUS AND
b.EMPL_STATUS = a.EMPL_STATUS
WHERE b.EMPLID IS NULL AND
b.EMPL_RCD IS NULL AND
b.EFFDT IS NULL AND
b.HR_STATUS IS NULL AND
b.EMPL_STATUS IS NULL
但是,我怀疑这会表现得更好。您最好的选择是在此处使用的五个字段(EMPL_ID、EMPL_RCD、EFFDT、HR_STATUS、EMPL_STATUS)上向两个表添加索引,或者换句话说
CREATE INDEX EDWHRSTG.PS_JOB_FULL_S_1
ON EDWHRSTG.PS_JOB_FULL_S (EMPL_ID,EMPL_STATUS);
和
CREATE INDEX SUODS.PS_JOB_S_1
ON SUODS.PS_JOB_S (EMPL_ID,EMPL_STATUS);
,
您需要确定时间花在哪里,以确定性能问题的根本原因;否则这只是一个猜测。 Active SQL Monitor 报告是您首选的诊断工具
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。