我需要知道是否有更好的/优化的方法从性能的Angular 来编写这个子查询。实际上,我认为这是一个实现更好连接的问题。
SELECT SE.TOUCHPOINT_ID, SE.TOUCHPOINT_DATE,
COALESCE(AC.COST_VAR_PER_SESSION, 0) + COALESCE(MC.COST_VAR_PER_SESSION, 0) AS COST_VAR_PER_SESSION,
COALESCE(AC.COST_FIX_PER_SESSION, 0) + COALESCE(MC.COST_FIX_PER_SESSION, 0) AS COST_FIX_PER_SESSION
FROM MLOGIC.ATTR.MARKETING_TOUCHPOINTS SE, MLOGIC.COST.AD_COST_DISTRIBUTION AC, MLOGIC.COST.SOURCE_MEDIUM_COST_DISTRIBUTION MC
WHERE SE.TOUCHPOINT_DATE = AC.TOUCHPOINT_DATE
AND SE.AD_ID = AC.AD_ID
AND SE.TOUCHPOINT_DATE = MC.TOUCHPOINT_DATE
AND SE.MEDIUM_ID = MC.MEDIUM_ID
AND SE.TOUCHPOINT_ID NOT IN (SELECT * FROM LEAD_EVENTS )
1条答案
按热度按时间ygya80vv1#
切换到正确位置
JOIN
语法可能不会改变性能。但是,它将使查询更易于理解和维护。另一方面,切换
NOT IN
至NOT EXISTS
可能会提高性能。所以我建议:对于这个,你需要一个索引
LEAD_EVENTS(TOUCHPOINT_ID)
.