Настроих прост PL/SQL скрипт (по-долу), за да изпробвам и двете опции за конкатенация в рамките на цикъл 100 милиона пъти всяка. Резултатът за ||
беше 142,93 секунди и CONCAT
беше 144,11 секунди. Така или иначе, вие говорите за приблизително 1,4 микросекунди на операция. Моето заключение е, че не изглежда да има някаква осезаема разлика в производителността.
Освен че е по-четлив, ||
е стандартът ANSI за оператора за конкатенация.
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;
Като бележка под линия, Oracle
казва това за целта на CONCAT
функция: