Nastavil jsem jednoduchý skript PL/SQL (níže), abych vyzkoušel obě možnosti zřetězení v rámci smyčky 100 milionkrát. Výsledek pro ||
byla 142,93 sekund a CONCAT
bylo 144,11 sekund. V každém případě mluvíte o zhruba 1,4 mikrosekundách na operaci. Můj závěr je, že se nezdá být žádný znatelný rozdíl ve výkonu.
Kromě toho, že je čitelnější, ||
je standard ANSI pro operátor zřetězení.
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;
Poznámka pod čarou:Oracle
říká to o účelu CONCAT
funkce: