UWVA#34720 Herschrijven vanwege traagheid, nu met ANSI JOIN's

svn path=/Website/trunk/; revision=28212
This commit is contained in:
Jos Groot Lipman
2016-02-18 11:19:42 +00:00
parent 8b4bc0d673
commit 8a96cbf3d3

View File

@@ -212,43 +212,51 @@ function fin_list (params)
+ " WHERE m.mld_alg_onroerendgoed_keys = onrg.alg_onroerendgoed_keys(+)) mld_fiat_write";
sql += " FROM fin_factuur f"
+ " , (SELECT prs.getkpverantwoordelijke (prs_kostenplaats_key, 2, -1) budgethouder,"
+ " kp.*"
+ " FROM prs_kostenplaats kp) k"
+ " , mld_opdr o"
+ " , mld_melding m"
+ " , mld_discipline d"
+ " , mld_stdmelding sm"
+ " , ins_srtdiscipline sd"
+ " , cnt_contract c"
+ " , cnt_discipline cd"
+ " , bes_bestelopdr bo"
+ " , ( SELECT bes_bestelopdr_key,"
+ " MIN(bes_srtdeel_key) bes_srtdeel_key,"
+ " MIN (bb.prs_kostenplaats_key) prs_kostenplaats_key,"
+ " MIN (prs_perslid_key) prs_perslid_key"
+ " FROM bes_bestelling bb,"
+ " bes_bestelopdr_item boi,"
+ " bes_bestelling_item bbi"
+ " WHERE bbi.bes_bestelling_key = bb.bes_bestelling_key"
+ " AND boi.bes_bestelopdr_item_key = bbi.bes_bestelopdr_item_key"
+ " GROUP BY bes_bestelopdr_key) bb";
+ " LEFT OUTER JOIN mld_opdr o "
+ " ON f.mld_opdr_key = o.mld_opdr_key "
+ " LEFT OUTER JOIN mld_melding m "
+ " ON o.mld_melding_key = m.mld_melding_key "
+ " LEFT OUTER JOIN mld_stdmelding sm "
+ " ON m.mld_stdmelding_key = sm.mld_stdmelding_key "
+ " LEFT OUTER JOIN mld_discipline d "
+ " ON sm.mld_ins_discipline_key = d.ins_discipline_key "
+ " LEFT OUTER JOIN ins_srtdiscipline sd "
+ " ON d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key "
+ " LEFT OUTER JOIN cnt_contract c "
+ " ON f.cnt_contract_key = c.cnt_contract_key "
+ " LEFT OUTER JOIN cnt_discipline cd"
+ " ON c.ins_discipline_key = cd.ins_discipline_key"
+ " LEFT OUTER JOIN bes_bestelopdr bo"
+ " ON f.bes_bestelopdr_key = bo.bes_bestelopdr_key "
+ " LEFT OUTER JOIN ( SELECT boi.bes_bestelopdr_key, "
+ " MIN (bes_srtdeel_key) bes_srtdeel_key, "
+ " MIN (bb.prs_kostenplaats_key) "
+ " prs_kostenplaats_key, "
+ " MIN (bb.prs_perslid_key) prs_perslid_key "
+ " FROM bes_bestelling bb, "
+ " bes_bestelopdr_item boi, "
+ " bes_bestelling_item bbi "
+ " WHERE bbi.bes_bestelling_key = bb.bes_bestelling_key "
+ " AND boi.bes_bestelopdr_item_key = "
+ " bbi.bes_bestelopdr_item_key "
+ " GROUP BY boi.bes_bestelopdr_key) bb "
+ " ON f.bes_bestelopdr_key = bb.bes_bestelopdr_key "
+ " LEFT OUTER JOIN (SELECT prs.getkpverantwoordelijke ( "
+ " prs_kostenplaats_key, "
+ " 2, "
+ " -1) "
+ " budgethouder, "
+ " kp.* "
+ " FROM prs_kostenplaats kp) k "
+ " ON k.prs_kostenplaats_key = COALESCE (bb.prs_kostenplaats_key, "
+ " c.prs_kostenplaats_key, "
+ " o.prs_kostenplaats_key, "
+ " m.prs_kostenplaats_key) ";
sql += " WHERE COALESCE (bb.prs_kostenplaats_key,"
+ " c.prs_kostenplaats_key,"
+ " o.prs_kostenplaats_key,"
+ " m.prs_kostenplaats_key) = k.prs_kostenplaats_key" // JGL: Erg veel outer joins omdat niet
+ " AND f.mld_opdr_key = o.mld_opdr_key(+)" // vast staat in welke tak we zitten
+ " AND o.mld_melding_key = m.mld_melding_key(+)"
+ " AND m.mld_stdmelding_key = sm.mld_stdmelding_key(+)"
+ " AND sm.mld_ins_discipline_key = d.ins_discipline_key(+)"
+ " AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key(+)"
+ " AND f.cnt_contract_key = c.cnt_contract_key(+)"
+ " AND c.ins_discipline_key = cd.ins_discipline_key(+)"
+ " AND bb.bes_bestelopdr_key(+) = bo.bes_bestelopdr_key"
+ " AND f.bes_bestelopdr_key = bo.bes_bestelopdr_key(+)"
+ (asContactpersoon
? " AND (o.mld_uitvoerende_keys IN (SELECT cp.prs_bedrijf_key"
sql += "WHERE 1=1"; // Nu de where clause bouwen
if (asContactpersoon)
sql +=" AND (o.mld_uitvoerende_keys IN (SELECT cp.prs_bedrijf_key"
+ " FROM prs_contactpersoon cp"
+ " WHERE cp.prs_perslid_key IN (" + prsKeys + ")"
+ " AND cp.prs_contactpersoon_verwijder IS NULL)"
@@ -260,8 +268,7 @@ function fin_list (params)
+ " FROM prs_contactpersoon cp"
+ " WHERE cp.prs_perslid_key IN (" + prsKeys + ")"
+ " AND cp.prs_contactpersoon_verwijder IS NULL)"
+ " )"
: "");
+ " )";
// Als geen FINFOF maar wel FINBOF moet ik ook de alg-scope controleren
if (!authparamsFINFOF && authparamsFINBOF && authparamsFINBOF.ALGreadlevel > -1)