Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Verketten von Sammlungen in PLSQL

Wenn Sie 10g oder höher verwenden, können Sie die CONCAT()-Funktion etwas effizienter machen, indem Sie den MULTISET UNION-Operator verwenden:

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;

Sie könnten die Dinge effizienter machen, indem Sie mehrere verschiedene Arrays füllen und dann MULTISET UNION einmal für alle aufrufen:

   lConcat := iList1 
               MULTISET UNION  
               iList2  
               MULTISET UNION  
               iList3
               MULTISET UNION  
               iList4;  

Verwendung von dynamischem SQL - vermutlich um die verschiedenen get_idsN() zu ersetzen Funktionen - könnte ein Ansatz sein, der es wert ist, untersucht zu werden, aber er wird Ihnen wahrscheinlich nicht viel, wenn überhaupt, an verbesserter Leistung bringen.

Temporäre Tabellen sind keine gute Idee, da sie im Vergleich zu Vorgängen im Speicher sehr schlecht abschneiden.