Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Gibt es einen Leistungsunterschied zwischen concat und || im Orakel

Ich habe ein einfaches PL/SQL-Skript (unten) eingerichtet, um beide Verkettungsoptionen innerhalb einer Schleife jeweils 100 Millionen Mal auszuprobieren. Das Ergebnis für || war 142,93 Sekunden und CONCAT war 144,11 Sekunden. In jedem Fall sprechen Sie von ungefähr 1,4 Mikrosekunden pro Vorgang. Meine Schlussfolgerung ist, dass es keinen nennenswerten Leistungsunterschied zu geben scheint.

|| ist nicht nur besser lesbar, sondern auch besser lesbar ist der ANSI-Standard für den Verkettungsoperator.

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 Fußnote:Oracle sagt dies über den Zweck des CONCAT Funktion: