这是针对Oracle 19 DB的问题。我需要一些帮助来优化此更新语句:
UPDATE T1 T1
SET T1.COL1 = (SELECT MAX(T2.COL1)
FROM T2 T2
WHERE T2.COL2 = T1.COL2)
WHERE T1.COL2 BETWEEN :1 AND :2
AND T1.COL1 IS NULL
AND EXISTS
(SELECT 1
FROM (SELECT MAX(T2.COL1)
FROM T2 T2
WHERE T2.COL2 = T1.COL2) V1
WHERE V1.COL1 IS NOT NULL)
字符串
我喜欢这个答案:
Massive UPDATE vs. MERGE performance on Oracle
我尝试做类似的,但我的问题是,我的更新有MAX(),我不知道如何优化它。
2条答案
按热度按时间arknldoa1#
Merge
,正如你所说:字符串
7fyelxc52#
使用带有
HAVING
子句的MERGE
语句执行V1.COL1 IS NOT NULL
过滤器(或者,在GROUP BY
之前使用WHERE
子句):字符串