Pokud používáte 10g nebo novější, můžete funkci CONCAT() trochu zefektivnit pomocí operátoru MULTISET UNION:
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;
Věci můžete zefektivnit tím, že naplníte několik různých polí a poté zavoláte MULTISET UNION jednou pro všechna:
lConcat := iList1
MULTISET UNION
iList2
MULTISET UNION
iList3
MULTISET UNION
iList4;
Použití dynamického SQL - pravděpodobně k nahrazení různých get_idsN()
funkce - může to být přístup, který stojí za prozkoumání, ale pravděpodobně vám nepřinese mnoho, pokud vůbec něco, ve smyslu lepšího výkonu.
Dočasné tabulky nejsou dobrý nápad, protože ve srovnání s prováděním věcí v paměti fungují velmi špatně.