Ik heb een eenvoudig PL/SQL-script (hieronder) opgezet om beide aaneenschakelingsopties binnen een lus elk 100 miljoen keer te proberen. Het resultaat voor ||
was 142,93 seconden en CONCAT
was 144,11 seconden. Hoe dan ook, je hebt het over ongeveer 1,4 microseconden per bewerking. Mijn conclusie is dat er geen noemenswaardig prestatieverschil lijkt te zijn.
||
. is niet alleen leesbaarder, is de ANSI-standaard voor de concatenatie-operator.
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;
Als voetnoot:Oracle
zegt dit over het doel van de CONCAT
functie: