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

C'è una differenza di prestazioni tra concat e || in oracolo

Ho impostato un semplice script PL/SQL (sotto) per provare entrambe le opzioni di concatenazione all'interno di un ciclo 100 milioni di volte ciascuna. Il risultato per || era 142,93 secondi e CONCAT era 144,11 secondi. In ogni caso, stai parlando di circa 1,4 microsecondi per operazione. La mia conclusione è che non sembra esserci alcuna differenza di prestazioni apprezzabile.

Oltre ad essere più leggibile, || è lo standard ANSI per l'operatore di concatenazione.

DECLARE
   i NUMBER;
   j NUMBER := 100000000;
   v VARCHAR2 (1000);
   v_start TIMESTAMP := SYSTIMESTAMP;
BEGIN
   FOR i IN 1 .. j LOOP
      v := DBMS_RANDOM.VALUE () || DBMS_RANDOM.VALUE ();
   END LOOP;    
   DBMS_OUTPUT.put_line ('1: ' || (SYSTIMESTAMP - v_start));
END;

DECLARE
   i NUMBER;
   j NUMBER := 100000000;
   v VARCHAR2 (1000);
   v_start TIMESTAMP := SYSTIMESTAMP;
BEGIN
   FOR i IN 1 .. j LOOP
      v := CONCAT (DBMS_RANDOM.VALUE (), DBMS_RANDOM.VALUE ());
   END LOOP;    
   DBMS_OUTPUT.put_line ('2: ' || (SYSTIMESTAMP - v_start));
END;

Come nota a piè di pagina, Oracle dice questo sullo scopo del CONCAT funzione: