sql >> Databáze >  >> RDS >> Oracle

Řetězení kolekcí v PLSQL

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ě.



  1. Mysql-php jak implementovat fond připojení s php v 5.2 a žádné trvalé připojení není povoleno

  2. poloměr vyhledávání podle zeměpisné šířky / délky

  3. Android Studio 3.0 canary 1 :Chyba syntaxe SQL

  4. Primární musí obsahovat všechny sloupce v chybě umístění rozdělení tabulky?