Oracle
 sql >> Base de données >  >> RDS >> Oracle

Existe-t-il une différence de performances entre concat et || dans oracle

J'ai configuré un simple script PL/SQL (ci-dessous) pour essayer les deux options de concaténation dans une boucle 100 millions de fois chacune. Le résultat pour || était de 142,93 secondes et CONCAT était de 144,11 secondes. Quoi qu'il en soit, vous parlez d'environ 1,4 microsecondes par opération. Ma conclusion est qu'il ne semble pas y avoir de différence de performances appréciable.

En plus d'être plus lisible, || est la norme ANSI pour l'opérateur de concaténation.

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;

En note de bas de page, Oracle dit ceci à propos du but de la CONCAT fonction :