Nếu bạn đang sử dụng 10g trở lên, bạn có thể làm cho hàm CONCAT () hiệu quả hơn một chút bằng cách sử dụng toán tử 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;
Bạn có thể làm cho mọi thứ hiệu quả hơn bằng cách điền vào một số mảng khác nhau và sau đó gọi MULTISET UNION một lần cho tất cả chúng:
lConcat := iList1
MULTISET UNION
iList2
MULTISET UNION
iList3
MULTISET UNION
iList4;
Sử dụng SQL động - có lẽ để thay thế các get_idsN()
khác nhau các hàm - có thể là một cách tiếp cận đáng để nghiên cứu, nhưng có lẽ sẽ không cung cấp cho bạn nhiều, nếu có, về cách cải thiện hiệu suất.
Các bảng tạm thời không phải là một ý tưởng hay, vì chúng hoạt động rất tệ so với việc thực hiện các công việc trong bộ nhớ.