sql >> Base de Datos >  >> RDS >> Oracle

¿Hay diferencia de rendimiento entre concat vs || en oráculo

Configuré un script PL/SQL simple (a continuación) para probar ambas opciones de concatenación dentro de un bucle 100 millones de veces cada una. El resultado de || fue de 142,93 segundos y CONCAT fue de 144,11 segundos. De cualquier manera, estás hablando de aproximadamente 1,4 microsegundos por operación. Mi conclusión es que no parece haber ninguna diferencia de rendimiento apreciable.

Además de ser más legible, || es el estándar ANSI para el operador de concatenación.

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;

Como nota al pie, Oracle dice esto sobre el propósito del CONCAT función: