Jeg konfigurerede et simpelt PL/SQL-script (nedenfor) for at prøve begge sammenkædningsmuligheder inden for en sløjfe 100 millioner gange hver. Resultatet for ||
var 142,93 sekunder og CONCAT
var 144,11 sekunder. Uanset hvad, taler du om cirka 1,4 mikrosekunder pr. operation. Min konklusion er, at der ikke ser ud til at være nogen nævneværdig præstationsforskel.
Ud over at være mere læsbar, er ||
er ANSI-standarden for sammenkædningsoperatøren.
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;
Som en fodnote, Oracle
siger dette om formålet med CONCAT
funktion: