UWVA#88207+#88852+#88914 Thema/Optimalisatie (timeout/performance-issue)

svn path=/Customer/trunk/; revision=68948
This commit is contained in:
Maarten van der Heide
2025-05-08 10:48:27 +00:00
parent 607a839fe8
commit 0ccccc87ab

View File

@@ -4670,7 +4670,7 @@ AS
ON x.alg_ruimte_key = y.alg_ruimte_key
UNION ALL
SELECT NULL, a.prs_afdeling_naam || '-' || a.prs_afdeling_omschrijving, a.prs_afdeling_key
FROM prs_afdeling a
FROM prs_afdeling a
LEFT JOIN
(SELECT DISTINCT b.prs_afdeling_key1
FROM prs_v_aanwezigruimteafdeling ra, prs_v_afdeling_boom b
@@ -4769,71 +4769,66 @@ END;
-------------- Stap 6: Definitie van thema HV-afdeling -------------------------
-- Stap 6a: Thema HV afdeling (voor de controllers)
/* Formatted on 23-11-2010 17:58:38 (QP5 v5.115.810.9015) */
/* Formatted on 8-5-2025 12:28:32 (QP5 v5.336) */
CREATE OR REPLACE FORCE VIEW uwva_v_thema_ruimte_afd
(
alg_ruimte_key,
waarde,
waarde_key
alg_ruimte_key,
waarde,
waarde_key
)
AS
SELECT x.alg_ruimte_key,
DECODE (
y.aantal,
NULL,
DECODE (x.verhuur, 0, '[Niet verhuurbaar]', '[GEEN DIVISIE!]'),
1,
DECODE (y.afd,
0, '[Geen afdeling toegewezen]',
SUBSTR (y.sp, 1, 60)),
'[Meerdere afdelingen!]'
),
DECODE (y.aantal,
NULL, DECODE (x.verhuur, 0, -1, NULL),
1, DECODE (y.afd, 0, -1, y.sp_key),
NULL)
FROM (SELECT r.alg_ruimte_key,
COALESCE (sr.prs_verhuurbaar, 0) verhuur,
COALESCE (sr.prs_bevat_werkplek, 0) werkplek
FROM alg_v_aanwezigruimte r, alg_srtruimte sr
WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key(+)) x
LEFT JOIN
( SELECT ra.alg_ruimte_key,
MIN (a.prs_afdeling_naam6) sp,
MIN (a.prs_afdeling_key) sp_key,
COUNT (ra.prs_afdeling_key) aantal,
MAX (NVL (a.prs_afdeling_parentkey, 0)) afd
FROM prs_v_aanwezigruimteafdeling ra,
prs_v_aanwezigafdeling a
WHERE ra.prs_afdeling_key = a.prs_afdeling_key
GROUP BY ra.alg_ruimte_key) y
ON x.alg_ruimte_key = y.alg_ruimte_key
UNION ALL
SELECT NULL, a.prs_afdeling_naam6, a.prs_afdeling_key
FROM prs_v_aanwezigafdeling a
WHERE a.prs_afdeling_parentkey IS NOT NULL
AND NOT EXISTS
(SELECT ra.prs_afdeling_key
FROM prs_v_aanwezigruimteafdeling ra
WHERE ra.prs_afdeling_key = a.prs_afdeling_key)
UNION ALL
SELECT DISTINCT
NULL, a.prs_afdeling_naam6 waarde, a.prs_afdeling_key waarde_key
FROM (SELECT DISTINCT ra.prs_afdeling_key
FROM prs_v_aanwezigruimteafdeling ra
MINUS
SELECT DISTINCT ra.prs_afdeling_key
FROM prs_v_aanwezigruimteafdeling ra, alg_v_aanwezigruimte r
WHERE ra.alg_ruimte_key IN
(SELECT alg_ruimte_key
FROM ( SELECT alg_ruimte_key,
COUNT ( * ) aantal
FROM prs_v_aanwezigruimteafdeling
GROUP BY alg_ruimte_key)
WHERE aantal = 1)
AND ra.alg_ruimte_key = r.alg_ruimte_key) x,
prs_v_aanwezigafdeling a
WHERE x.prs_afdeling_key = a.prs_afdeling_key;
SELECT x.alg_ruimte_key,
DECODE (y.aantal,
NULL, DECODE (x.verhuur,
0, '[Niet verhuurbaar]',
'[GEEN DIVISIE!]'),
1, DECODE (y.afd,
0, '[Geen afdeling toegewezen]',
SUBSTR (y.sp, 1, 60)),
'[Meerdere afdelingen!]'),
DECODE (y.aantal,
NULL, DECODE (x.verhuur, 0, -1, NULL),
1, DECODE (y.afd, 0, -1, y.sp_key),
NULL)
FROM (SELECT r.alg_ruimte_key, COALESCE (sr.prs_verhuurbaar, 0) verhuur
FROM alg_v_aanwezigruimte r, alg_srtruimte sr
WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key(+)) x
LEFT JOIN
( SELECT ra.alg_ruimte_key,
MIN (a.prs_afdeling_naam || '-' || a.prs_afdeling_omschrijving) sp,
MIN (a.prs_afdeling_key) sp_key,
COUNT (ra.prs_afdeling_key) aantal,
MAX (NVL (a.prs_afdeling_parentkey, 0)) afd
FROM prs_v_aanwezigruimteafdeling ra,
(SELECT * FROM prs_afdeling WHERE prs_afdeling_verwijder IS NULL) a
WHERE ra.prs_afdeling_key = a.prs_afdeling_key
GROUP BY ra.alg_ruimte_key) y
ON x.alg_ruimte_key = y.alg_ruimte_key
UNION ALL
SELECT NULL, a.prs_afdeling_naam || '-' || a.prs_afdeling_omschrijving, a.prs_afdeling_key
FROM prs_afdeling a
WHERE a.prs_afdeling_verwijder IS NULL
AND a.prs_afdeling_parentkey IS NOT NULL
AND NOT EXISTS
(SELECT 1
FROM prs_v_aanwezigruimteafdeling
WHERE prs_afdeling_key = a.prs_afdeling_key)
UNION ALL
SELECT DISTINCT NULL, a.prs_afdeling_naam || '-' || a.prs_afdeling_omschrijving, a.prs_afdeling_key
FROM (SELECT DISTINCT ra.prs_afdeling_key
FROM prs_v_aanwezigruimteafdeling ra
MINUS
SELECT DISTINCT ra.prs_afdeling_key
FROM prs_v_aanwezigruimteafdeling ra, alg_v_aanwezigruimte r
WHERE ra.alg_ruimte_key IN
(SELECT alg_ruimte_key
FROM ( SELECT alg_ruimte_key, COUNT (*) aantal
FROM prs_v_aanwezigruimteafdeling
GROUP BY alg_ruimte_key)
WHERE aantal = 1)
AND ra.alg_ruimte_key = r.alg_ruimte_key) x,
(SELECT * FROM prs_afdeling WHERE prs_afdeling_verwijder IS NULL) a
WHERE x.prs_afdeling_key = a.prs_afdeling_key;
-- Stap 6a: Bijbehorend LabelThema HV afdeling (voor de controllers)
CREATE OR REPLACE FORCE VIEW uwva_v_label_ruimte_afd (alg_ruimte_key,waarde)