Я не силен в SQL и Oracle, и мне нужна помощь для оптимизации этого представления, чтобы получить результат как можно быстрее. В настоящее время это занимает 7 минут, когда я запускаю его предложение выбора.
это представление:
CREATE OR REPLACE FORCE VIEW "DMUSEWADM"."SOUS_FAMILLE_WITH_CATALOG_INFO"
("IDSOUSFAMILLE", "LIBELLESOUSFAMILLE", "DATEMODIFSF", "IDFAMILLE",
"CHEMIN", "GNP", "TYPEFICHIER", "ESTPLANIFIABLE", "DATEPLANIFIABLE",
"AUTEURMODIFSF", "NATURESOUSFAMILLE", "LIBELLEMETIERSOUSFAMILLE",
"CONTACTPRODUCTEUR", "CATALOGVISIBILITY", "PREVISIONALDATE",
"DATEDERNIERCHARGEMENT", "DATEPROCHAINCHARGEMENT", "LIBELLEFAMILLE") AS
SELECT SF."IDSOUSFAMILLE",SF."LIBELLESOUSFAMILLE",SF."DATEMODIFSF",SF."IDFAMILLE",SF."CHEMIN",SF."GNP", SF."TYPEFICHIER",SF."ESTPLANIFIABLE",SF."DATEPLANIFIABLE",SF."AUTEURMODIFSF",SF."NATURESOUSFAMILLE",SF."LIBELLEMETIERSOUSFAMILLE",SF."CONTACTPRODUCTEUR",SF."CATALOGVISIBILITY",SF."PREVISIONALDATE",
( SELECT datefinchrgt from chargement where numchrgt = ( select max(numchrgt) from CHARGEMENT where nomhbase = ( select nomhbase from hbase where nomes = SF.IDSOUSFAMILLE ) and etatchrgt = 'OK')
) as DATEDERNIERCHARGEMENT,
( SELECT (
CASE WHEN DATECHARGEMENT IS NOT NULL THEN
(
CASE WHEN DATENSF IS NOT NULL THEN
GREATEST(DATECHARGEMENT, DATENSF)
ELSE
DATECHARGEMENT
END
)
ELSE
DATENSF
END
)
FROM
(
SELECT
subsf.idsousfamille as subid,
(SELECT max(c.dateauplustot) FROM CHARGEMENT c, HBASE h WHERE c.typechrgt = 'HBASEESDATA' and c.etatchrgt = 'PREVU' and c.nomhbase = h.nomhbase and h.nomes = subsf.idsousfamille) as DATECHARGEMENT,
(SELECT max(nsf.dateauplustot) FROM NAS_SOUSFAMILLE nsf WHERE nsf.etatchrgt = 'PREVU' AND nsf.sousfamille = subsf.idsousfamille) as DATENSF
FROM sousfamille subsf
)
WHERE subid = SF.idsousfamille
) as DATEPROCHAINCHARGEMENT,
(
SELECT f.libelleFamille from famille f where sf.idfamille = f.idfamille
) as LIBELLEFAMILLE
FROM SOUSFAMILLE SF;
Как я могу оптимизировать его, чтобы сократить время выполнения?
я был бы признателен за любую помощь:)
вот план объяснения запроса