У нас есть запрос, который выполняется для разных источников, много раз каждый день.
Каждый раз, когда он выполняется более 40 минут, мы пытаемся выяснить, сможем ли мы сократить время выполнения запроса
Все, что делает запрос - пытается добавить новые строки в существующую таблицу (сравнивая по ключам)
SELECT A.*
FROM
(
SELECT *
FROM A
)
A
LEFT OUTER JOIN
(
SELECT f1, f11
FROM B
WHERE f13 IN ( SELECT f13 FROM C)
)
B
ON A.f1 = B.f1
AND nvl(A.f11,'NULL') = nvl(B.f11,'NULL')
WHERE isnull(B.f1)
AND isnotnull(A.f1)
Что я пытаюсь сделать
SELECT A.* .
FROM (
SELECT *
FROM A
)
A
WHERE NOT EXISTS
(
SELECT 1
FROM B WHERE f13 IN ( SELECT f13 FROM C)
and A.f1 = B.f1 and A.f11 = B.f11
)
Будет ли это работать не только для получения аналогичных результатов, но и для сокращения времени выполнения.
Небольшое улучшение в запросе будет иметь большое значение, так как этот запрос выполняется 8 раз в день.
Любые предложения будут полезны.