Hvis du bruger 10g eller senere, kan du gøre CONCAT()-funktionen en smule mere effektiv ved at bruge MULTISET UNION-operatoren:
FUNCTION concat (
iList1 IN ID_ARRAY,
iList2 IN ID_ARRAY
)
RETURN ID_ARRAY IS
lConcat ID_ARRAY;
BEGIN
lConcat := iList1
MULTISET UNION
iList2 A
;
RETURN lConcat;
END concat;
Du kan gøre tingene mere effektive ved at udfylde flere forskellige arrays og derefter kalde MULTISET UNION én gang for dem alle:
lConcat := iList1
MULTISET UNION
iList2
MULTISET UNION
iList3
MULTISET UNION
iList4;
Brug af dynamisk SQL - formentlig til at erstatte de forskellige get_idsN()
funktioner - kan være en tilgang, der er værd at undersøge, men vil sandsynligvis ikke give dig meget, hvis noget, i vejen for forbedret ydeevne.
Midlertidige borde er ikke en god idé, fordi de fungerer meget dårligt sammenlignet med at gøre ting i hukommelsen.