sql >> Database teknologi >  >> RDS >> Oracle

Sammenkædning af samlinger i PLSQL

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.



  1. Konfig SQL*Plus for ikke at returnere andet end data

  2. Sådan installeres og sikres MariaDB på Debian 9

  3. MariaDB SESSION_USER() Forklaret

  4. Hvorfor kan jeg ikke udføre en aggregatfunktion på et udtryk, der indeholder et aggregat, men jeg kan gøre det ved at oprette en ny select-sætning omkring det?