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: